摘要: 看下面一道面试题:#include<stdio.h>#include<stdlib.h>int main(void) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); return 0;} 输出结果为:2,5在这里主要是考察*(a+1)和&a+1的区别了。很显然*(a+1)取的是a[1],然而&a+1取的是什么呢?&a不是首地址加1,而是加上1个a数组大小的偏移。因此ptr实际上等于a+5,所以*(ptr-1 阅读全文
posted @ 2011-09-26 17:07 Matrix海子 阅读(2098) 评论(0) 推荐(1) 编辑