数组中a和&a 的区别?

来源:互联网 发布:好运通超市软件 编辑:程序博客网 时间:2024/05/16 12:10
数组中a和&a 的区别?
例:
main() 

int a[5]={1,2,3,4,5}; //a[0]=1-------a[4]=5
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1)); 

打印出来的值为多少呢?


答案:2  5


(1)a 是数组首元素的首地址,也就是a[0]的首地址,a+1 是数组下一元素的首地址,即a[1]的首地址。


(2)&a 是数组的首地址,&a+1 是下一个数组的首地址。所以ptr 是指向a[5],并且ptr 是int * 类型,所以     *(ptr-1) 是指向a[4] ,输出5。
原创粉丝点击