若a為二維陣列,則a等價於Aa,若a為二維陣列,則a13等價於。Aa13Ba13Ca13Da

2021-03-03 21:56:08 字數 3184 閱讀 9086

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列。假定第一行資料為 第...