本人用的是32位机,64位的请自行推算
一维数组的地址
#include
int main(int argc, char *argv[])
{
int a[2];
printf("a address is %p\n", a);
printf("&a[0] address is %p\n", &a[0]);
printf("a+1 address is %p\n", a+1); //+4byte
printf("&a[0]+1 address is %p\n", &a[0]+1);//+4byte
printf("&a+1 address is %p\n", &a+1); //+8byte
return 0;
}
a+1 在首地址上加了4个字节
&a[0]+1 在首地址上加了4个字节
&a+1 在首地址上加了8个字节
二维数组的地址
#include
int main(int argc, char *argv[])
{
int a[2][3];
printf("a address is %p\n", a); //
printf("a+1 address is %p\n", a+1); //+12byte
printf("a[0] address is %p\n", a[0]); //
printf("a[0]+1 address is %p\n", a[0]+1);//+4byte
printf("&a address is %p\n", &a); //
printf("&a+1 address is %p\n", &a+1); //+24byte
printf("&a[0]+1 address is %p\n", &a[0]+1); //+12byte
printf("&a[0][0]+1 address is %p\n", &a[0][0]+1); //+4byte
return 0;
}
a[0]+1 在首地址上加了4个字节
&a+1 在首地址上加了24个字节
&a[0]+1 在首地址上加了12个字节
&a[0][0]+1 在首地址上加了4个字节
不管是几维数组,数组名都是代表该数组的首元素的地址
不管是几维数组,如果数组名前面加上取地址& ,代表指向的是整个数组