这是由一道面试题联想到的一些问题,这里自己给做个小总结!
首先看看这道面试题:
#include <stdio.h>
int main() {
int a[5] = { 1, 2, 3, 4, 5 };
int *pi = &a + 1;
printf("%d, %d\n", *(a + 1), *(pi - 1));
return 0;
}
答案是2, 5。至于是为什么,我后面说一下我自己的理解。
这里有个要注意的地方,以上代码在CodeBlock中会有个警告,但是在VS2013中有个错误提示,错误如下:”int()[5]类型的值不能用于初始化”int“类型的实体。当然,这里我们可以进行强制类型转换,那么这个错误提示就会消失。修改后的代码如下ÿ