先来个简单的小案例
#include <stdio.h>
#include <iostream>using namespace std;int main()
{int a[10] = { 0 };printf("%d\n", a);printf("%d\n", &a);printf("%d\n", a+1);printf("%d\n", &a+1);printf("%d\n", &a[0]+1);printf("%d\n", sizeof(a));printf("%d\n", sizeof(&a));
}
分析: 打印a和&a的地址是一样的,那么他们代表是同样的意思吗?当然不是了,a是一个数组同时也代表首地址的指针,而&a中的a代表的是整个元素数组的数组,从后面的a+1可以看出,a是首地址指针,+1偏移一个int,而&a+1中,&a代表一整个数组,&a+1偏移一个数组的量,也就是40,所以