先来个简单的小案例
#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,所以