如下为代码
int arr[10] = {0};
int *p1 = arr; //合法
int *p2 = &arr; //不合法
int (*p3)[10] = &arr //合法
p3是指向带有10个int元素的数组的指针,本质上是个指针,但对他初始化只能用数组取地址
然而p2不能用数组取地址来初始化。
我尝试输出相关地址寻找答案。
cout << "p1的值:" << p1 << endl;
cout << "p2的值:" << p2 << endl;
cout << "arr的值:" << arr << endl;
cout << "&arr的值" << &arr << endl;
输出如下:
显然,arr和&arr所指的地址完全相同,按道理应该都可以赋值给指针的啊。