「對二維陣列a,a 1與a都是陣列第二行的首地址」是錯的,為什麼呢

2021-04-22 02:17:18 字數 2513 閱讀 6146

1樓:匿名使用者

型別的問題。

a+1是個地址沒錯,因為陣列名被自動轉換為地址並參與+運算;

但a[1]是個一維陣列物件,你用sizeof對比一下它們兩個就知道了。

2樓:匿名使用者

a+1是第二行的首地址 它指向第二行,如果是(a+1)+1則指向第2行(從第0行開始數),a[1]指向第一行的第0個元素,指標指向列,a[1]+1則表示第一行的第一列元素(行和列都是從0開始)。

在c語言中,二維陣列a[3][4]中,&(a+1)表示什麼?

3樓:景

表示第a[1]行的首元素地址

4樓:匿名使用者

a[3][0]的地址

c語言中的二維陣列裡a+1和*(a+1)為什麼都是地址

5樓:劉文正粉絲

二維陣列, int a[10][20];

a是一個指標的指標, 即二級指標.

一個指標加一個數, 當然還是指標(即a+1是指標)

取值一個二級指標, 是一級指標(即指標), 所以還是指標, 不過型別發生了變化.

a+1的型別為int *[10].

而*(a+1)的型別則為int *, 也就是平常的指標.

如果你學習二維陣列是用心, 你就會知道不存在二維陣列, 二維陣列其實是一個包含陣列的陣列, 即陣列的每一個元素還是一個陣列(這點有點像物件導向的思維).

所以a[0]就是取第一個元素值, 而第一個元素是陣列, 所以其值仍是一個指標.

答了這麼多, 一看問題, 發現是"地址".....地址和指標是一個東西.

6樓:zh呼嘯而過

例如a[5][10];

a + 1的值是第二行的首地址,

* (a + 1)得值也是第二行的首地址,但是a + 1不等於a[1],而* (a + 1)等於a[1]。

如果給a+1再加1,就是a+1+1,就是a+2,它的值是第三行的首地址

如果給*(a+1)再加1,就是*(a+1)+1,它的值是第二行的第二個地址

他們移動的區別:前者是縱向的,後者是橫向的。

指標型別的區別:兩者均存放為同一地址,但前者是指向一維陣列,後者是指向元素的。

實際就是前者每次跳動4*10個位元組,後者每次跳動4個位元組。

7樓:twinkleh丶

a+1應該是 (a+0)+1

這裡的a是二維陣列中的二級指標

陣列名為a[0]的一維陣列(表示行)

也是陣列名為a的一維陣列(表示列)

後面的1表示行陣列移動1行

0表示列的移動

所以是1行0列的地址

*(a+1)中a是二級指標

取值二級指標是一級指標

一級指標指向的一維陣列(二維陣列中的行)

一維陣列移動一位只能是向下移動也就是行,

所以就是 第一行的首地址 也就等於二維陣列中 第一行零列的地址

8樓:tlier丿殘刀

二維陣列又包含多個一維陣列 a指向第一個一維陣列的首地址就還是地址

二維陣列a[3][3]中p=a,當++p後為什麼指向的是a[0][1]而不是a[1][0]呢,*p+1與*(p+1)的區別在哪

9樓:匿名使用者

a是一個二級源指標

指向一個指標陣列,為a[0],a[1],a[2]a[0],a[1],a[2]又分別是指標,指向他們的兒子……所以p=a;++p;

p本來指向a[0]後增一,指向a[1]

a[1]就是a[1][0];

10樓:匿名使用者

(*(p+i)+j) p+i求行下標自j是列bai下標*(dup[i]+j) p[i]是行下標,j是列下標;

*(*(p+i)+j) *(p+i)取行下標,再加j 取列zhi下標元dao素;

p+1 指向a[0][1]

p+3 指向a[1][0]

行優先,先走完第一行,後走第二行。

p+1是a[0][1]

p+3是 a[1][0]這是指標

然後 a的話就是指向第一行 a+1是指向第二行 a+2是指向第三行意思是說

p+1=a[0][1]

p+3=a[1][0]

然後賦值的話 p=a 相當於a[0][0]p=a+1 相當於 a[1][0]

p=a+2相當於 a[2][0]

11樓:無風無雲的海角

沒有啊!

++p後是

襲指向a[1][0];

*p+1是行指標變列指標後,列指標+1;

*(p+1)是行指標+1後變為列指標;

#include

int main()

;int (*p)[3];

p=a;

++p;

printf("%d\n",*(*p));

return 0;}

c語言二維陣列與指標運算,C語言二維陣列與指標運算

在 p 4 中p是指向一個有4 個int元素的一維陣列的首地址,int p 4 a就相當於int p 4 p a 兩個語句,所以 p i 指向i行地址,p i c 指向i行c列的地址即a i c int p 4 a 表示指向一維陣列 4列 的指標,然後a 0 地址給了p,p i就表示a i 的地址....

c 二維陣列賦值,c 二維陣列怎麼定義與賦值?

沒有,如果想a 0 b 那麼使用交錯陣列。int a new int 5 int b new int a 0 b 同時,你的兩個陣列宣告錯誤。c net中如何定義二維陣列並給其賦值 定義一個3行2列的二維陣列,元素型別為int int values values 0,1 100 修改第一行第二列元素...

C語言指標陣列與二維陣列行指標小問題

指標陣列 copy 該陣列中存放的全部都是指標,例如 原例子中的char name,這個是一個標準透了的一維陣列,就像是陣列 int a 4 a 1 2 a 2 3 不同的是陣列name存放的是指標,陣列a存放的是數字 name 1 name 2 表示的是把name 2 的指標賦值給name 1 就...