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 就...