摘要: 1.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是数组指针,其类型为 int (*)[5]; 而 指针加1要根据指针类型加 阅读全文
posted @ 2013-08-28 13:45 魔术先生 阅读(203) 评论(0) 推荐(0) 编辑