数组中 amp;a和 amp;a,a 的区别

2025-01-19 15:41:59
推荐回答(1个)
回答1:

int a[10];

那么 a 的值是 数组首元素的首地址

&a 的值也是上面的

但是区别

&a数组a的首地址

对指针加1 得到是下一个元素的地址,一个类型为T,+1 是以sizeof(T)为移动单位的

#include

int main(int argc,char *argv[])

{

int a[5] = {1,2,3,4,5};

int *ptr = (int *)(&a + 1);//指针移动了相当一个数组,又将地址进行强转

printf("%x/n",&a[5]);

printf("%x/n",ptr);

printf("%d/n %d/n",*(a +1),*(ptr-1)); //指针移动一个int型大小,即就是一个元素

return 0;

}

#includeint main(int argc,char *argv[]){int a[5] = {1,2,3,4,5};int *ptr = (int *)(&a + 1);printf("%x/n",&a[5]);printf("%x/n",ptr);printf("%d/n %d/n",*(a +1),*(ptr-1));return 0;}