#include <iostream>
using namespace std;
int main()
{
int arr[5] = {1,2,3,4,5};
cout <<" arr = " << arr << endl;
cout <<" &arr = " << &arr << endl;
cout <<" arr + 1 = " << arr + 1 << endl;
cout <<" &arr[0] + 1 = " << &arr[0] + 1 << endl;
cout <<" &arr + 1 = " << &arr + 1 << endl;
cout << endl;
cout <<" sizeof(arr) = " << sizeof(arr) << endl;
cout <<" sizeof(&arr) = " << sizeof(&arr) << endl;
return 0;
}
我们知道arr是数组首元素的首地址(和&arr[0]一样),&arr是整个数组arr的首地址。值相同,但是“意义不同”
输出结果:
“+1”就是偏移量问题:一个类型为T的指针的移动,是以sizeof(T)为移动单位。
arr+1:在数组首元素的首地址的基础上,偏移一个sizeof(arr[0])单位
&arr+1:在数组首地址的基础上,偏移一个sizeof(arr)单位