指针易混淆
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int a[5];
cout << "a: "<< a << endl;
cout << "&a[0]:" << &a[0] << endl;
cout << "&a :"<< &a << endl;
cout << "a+1 :"<< a+1 << endl;
cout << "&a+1 :"<< &a+1 << endl;
return 0;
}
a: 0x7fff5aaac660
&a[0]:0x7fff5aaac660
&a :0x7fff5aaac660
a+1 :0x7fff5aaac664
&a+1 :0x7fff5aaac674
数组名是一个指针,指向数组的第一个元素即a[0]
或a+0
(a
)
&a
虽然在数值上和a、a[0]相等,但是它们的 跨度/步长 却不一样:
a+1
: 跨越一个int(4字节的大小)&a+1
: 跨越一个数组(5*
4个字节的大小)