关于C语言指针的问题

C语言指针问题 下面代码为什么第二个数字是5呢?

int a[5] = {1,2,3,4,5};
int *p = (int *)(&a+1);
NSLog(@"%d,%d", *(a+1), *(p-1));
阅读 7.7k
评论
    3 个回答

    不好意思翻老帖。无意间看到这个,因为以前做嵌入式编程,数组、指针是经常使用的,包括对指针变量直接赋值一个内存地址(这个在做正常的应用程序一般不会用到),以前也没有发现&arr和arr有什么区别。今天特意查了一下,原来这个要视编译器而定。有的编译器把数组和指针是分别对待的,对数组名取地址的意义是针对整个数组内存,有的编译器则把数组认为是指针的一个特定形式,这种情况指针跳一个就是一个数组元素的内存,而不存在整个数组内存这一说。