1樓:匿名使用者
選擇b*(a[1]+3)等效於a[1][3]
定義一個二維陣列a[3][3],請問a與a[0]等價嗎,*(a+1)與a[1]等價嗎,a+1與a[ 10
2樓:痛不過錯愛
a是二維陣列的首地址,而a[0]同樣是二維陣列中第一行的首地址,是等價的。*(a+1)是第二行首個元素,a[1]是其地址,不等價。a[1]與a+1等價
3樓:月
單獨一個a就是指a[0]=a,*(a+1)=a[1],a+1=a[0]+1
若有定義int a[2][3],*p=a;則以下不能表示陣列元素a[1][2]的是選項:a,*(a[1]+2) b,
4樓:匿名使用者
首先 題目有問題
定義的時候 int *p; 指標p可以指向任何一個整形變數a是二維陣列名
int *p=a; 這個賦值本身就不對
5樓:
選baibcd
c、d選項等價,p是a的地址du,a是陣列名即陣列首元素zhia[0][0]的地址的dao地址,內所以p解引用一次得到的容值還是一個地址,和陣列元素自然不同
b選項,p指標解引用2次依然還是個地址,故不和a[1][2]相同a選項,*(a[1]+2)根據陣列與指標的等價關係(arr[i]==*(arr+i)),所以*(a[1]+2)==
a[1][2]
p要解引用3次才可能是陣列的元素
定義了二維陣列a[3][4],那麼a+1,*(a+1),*a[1],*(a[0]+1)各代表什麼意思
6樓:匿名使用者
因為a是t[4]型別,所
以a[1]得到的是int型的值,對其取下標是非法的內。所以a[1][0]是一個非法的表示式。
咳咳以容下都是廢話。。怎麼跑題了。。。既然打出來就懶得刪了至於&a[1][0],編譯器解釋為&((a[1])[0]),同樣非法。
7樓:聽不清啊
定義了二維陣列a[3][4],那麼
a+1=*(a+1)=*a[1],表示a[1]的地址,即&a[[1]。
*(a[0]+1)表示a[0][1]
下列能夠正確表示陣列元素a[1][2]的表示式是
8樓:匿名使用者
d兩個知識點來:
1、二維陣列
的陣列名,源可以看作類bai型du是指向第二維子陣列的zhi指dao針,比如int a[4][3];a的型別是int (*)[3],即指向int [3]陣列的指標。
2、p[i]等價於*(p+i)。
由這兩點可知,int (*prt)[3]=a的話,prt和a在使用上就是一樣的了。a[1][2]就是ptr[1][2],利用知識點2可知ptr[1][2]=*(ptr[1]+2)=*(*(ptr+1)+2)
9樓:匿名使用者
d.............
c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j),但是我看不懂這個東西啊 求解釋啊
10樓:匿名使用者
這個表述是有問題的,*(*(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)」這個題設本身是錯誤的,不要被其誤導。
11樓:才那
不可以寫成a[a][j]
a+i是一個陣列元素的地址,而*(a+i)是取該地址裡的資料,如果*(a+i)中儲存另一個陣列的首地址的話,**(a+i)就能取到另一個陣列裡的第一個資料.
依次類推,取該陣列其他資料*(*(a+i)+j)就能取到第a[i][j]了
最簡單直觀理解為一個陣列中的每個元素又儲存了其他陣列。
12樓:藍青霄
首先糾正一個題裡的小錯誤,二維陣列應該是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]了
13樓:油菜花零
*(a+1)表示a向下一行的地址,*(a+1)+j表示向下一行後再向右j列,*(*(a+1)+j)表示地址a向下一行後向右j列的記憶體地址的值。相當於a[1][j],不知道你說的a[a][j]是什麼
14樓:匿名使用者
這個是列指標吧
嗯。你就把二維陣列當做指標的指標這樣的話感覺起來就輕鬆多了
c語言二維陣列a[i][j],為什麼a[1]和*(a+1)等價啊?*(a+1)為什麼會是一個地址?弄糊塗了,請高手解答
15樓:
*(a+1)指標取得不就是地址嗎
16樓:匿名使用者
*(a+1)是定義的指標,
因為陣列的起始地址a[0]可以用a來代替~
所以a[1]和*(a+1)是同一個地址
17樓:
首先a代表整個陣列的首地址沒問題吧,a+1就是把地址下移,*(a+1)就是取其地址的內容。這回可以理解了吧!
若二維陣列a有m列,則a元素前的陣列元素個數為多
答 如果二維陣列a有m列,則62616964757a686964616fe58685e5aeb931333431373237 a i j 元素前的陣列元素個數 為 m i j 個元素本題目計算步驟如下 1 二維陣列a有m列,則每行有m個元素 2 要求的為a i j 元素前的陣列元素個數,該元素之前有...
二維陣列inta給出a2的等價形式
a是陣列首地址 a就是a 0 所以 a 2就是a 0 2 的地址。可以寫作 a 0 2 或者 a 0 2 指儲存整型變數a 0 2 的地址 c語言 二維陣列int a 2 3 請給出 a 2的等價形式 a是陣列首地址 a就是a 0 所以 a 2就是a 0 2 的地址。可以寫作 a 0 2 或者 a ...
c語言中的二維陣列a可以表述為a
這個表述是有問題的,a 1 j 沒有規定首地址,a 1 已經表示a 1地址中的資料了,明顯與陣列概念不合。a a j 裡面陣列名稱和一個維度的陣列的個數表示重疊了,所以我換一種方式來表示 a y x 為了便於理解,假定y 3,x 2。在陣列中的資料有y行,x列 也就是3行,2列。假定第一行資料為 第...