1樓:匿名使用者
a是陣列首地址
*a就是a[0]
所以 *a+2就是a[0][2]的地址。
可以寫作
a[0]+2
或者 &a[0][2]
2樓:蝸殼裡的糾纏
指儲存整型變數a[0][2]的地址
c語言:二維陣列int a[2][3],請給出*(a)+2的等價形式
3樓:匿名使用者
a是陣列首地址
*a就是a[0]
所以 *a+2就是a[0][2]的地址。
可以寫作
a[0]+2
或者 &a[0][2]
c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j),但是我看不懂這個東西啊 求解釋啊
4樓:匿名使用者
這個表述是有問題的,*(*(a+1)+j)沒有規定首地址,*(a+1)已經表示a+1地址中的資料了,明顯與陣列概念不合。
a[a][j]裡面陣列名稱和一個維度的陣列的個數表示重疊了,所以我換一種方式來表示:a[y][x]。為了便於理解,假定y=3,x=2。
在陣列中的資料有y行,x列;也就是3行,2列。假定第一行資料為;第二行資料為;第三行的資料為,那麼陣列a在記憶體中的資料為從首地址開始的連續6個資料,。假定首地址為0x01,那麼a[0][0]的地址為0x01,對應資料「1」,該可以表示為((行數 + 0x01)+ 列數),該地址的資料可以表示為*((行數 + 0x01)+ 列數),這個表示形式,和題目中的比較接近。
以此類推,a[0][1]的地址為0x02,對應資料「2」;a[1][1]為第2行第2列,地址為0x04,對應資料0x04。
由此可以看出a[y][x]可以表示為*((x + &a) + y);&a為陣列a的首地址。
不知道這樣講您是否能夠理解。同時「c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j)」這個題設本身是錯誤的,不要被其誤導。
5樓:才那
不可以寫成a[a][j]
a+i是一個陣列元素的地址,而*(a+i)是取該地址裡的資料,如果*(a+i)中儲存另一個陣列的首地址的話,**(a+i)就能取到另一個陣列裡的第一個資料.
依次類推,取該陣列其他資料*(*(a+i)+j)就能取到第a[i][j]了
最簡單直觀理解為一個陣列中的每個元素又儲存了其他陣列。
6樓:藍青霄
首先糾正一個題裡的小錯誤,二維陣列應該是a[1][j];陣列元素的表示方法(以一維為例)a[i]等價於*(a+i),因為陣列名即為陣列的首地址,(a+i)即為陣列a的第i個元素的地址,*(a+i)就理所當然是a[i]了。再說二維陣列,二維陣列的陣列名可看為一個指標的指標,*(a+1)就表示二維陣列的第二排陣列首地址a[1],然後這個地址加j即為a[1][j]的地址,*(*(a+1)+j)就是二維陣列a[1][j]了
7樓:油菜花零
*(a+1)表示a向下一行的地址,*(a+1)+j表示向下一行後再向右j列,*(*(a+1)+j)表示地址a向下一行後向右j列的記憶體地址的值。相當於a[1][j],不知道你說的a[a][j]是什麼
8樓:匿名使用者
這個是列指標吧
嗯。你就把二維陣列當做指標的指標這樣的話感覺起來就輕鬆多了
若a為二維陣列,則a等價於Aa,若a為二維陣列,則a13等價於。Aa13Ba13Ca13Da
選擇b a 1 3 等效於a 1 3 定義一個二維陣列a 3 3 請問a與a 0 等價嗎,a 1 與a 1 等價嗎,a 1與a 10 a是二維陣列的首地址,而a 0 同樣是二維陣列中第一行的首地址,是等價的。a 1 是第二行首個元素,a 1 是其地址,不等價。a 1 與a 1等價 單獨一個a就是指a...
php二維陣列合成2維陣列,條件是lid id的合併
按照你的要求合併兩個二維陣列的php程式如下 arr1 array array lid 67,title t恤 array lid 27,title 襯衣 arr1 array array lid 67,title t恤 array lid 27,title 襯衣...
關於二維陣列指標的問題
其實這是c在實現多維陣列時的魔術而已,實際上a就是一個12個int的資料區。你在寫a 1 2 時編譯器實際上知道這個陣列一行是4個元素,所以計算它的地址為a 1 4 2,即a 1 2 就是 a 1 4 2 另一方面,編譯器允許使用形如a 1 這樣的表述,由於它知道a是一個定義為a 3 4 的陣列,所...