摘要: 指出下面代码的输出,并解释为什么。(不错,对地址掌握的深入挖潜)main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1));}输出:2,5 *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5,&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int),所以,int *ptr=(int *)(&a+1);ptr实际是&(a[5]),也就是a+5原因如下:&a是数组指针 阅读全文
posted @ 2013-09-22 16:51 CPYER 阅读(808) 评论(0) 推荐(1)