1、数组名的问题
#include<iostream>
using namespace std;int main()
{
int array[3]={1,2,3};
cout<<array+1<<endl;
cout<<&array+1<<endl;
return 0;
}
输出的结果相差2。这是为什么?
解释:
数组名是一个数组首地址的常量指针
array 相当于 const char* array;
array = RValue; //Error,array is const variable
array的类型可以看作:int *
所以array + 1 的结果就是 array 的地址 + sizeof(int)
&array的类型是 指向 "int[3]"类型的指针,即指向数组的指针int (*)[3]
所以&array的结果就是 array的地址 + sizeof(int[3])
#include<iostream>
using namespace std;
int main()
{
int array[3]={1,2,3};
cout<<array+1<<endl;
cout<<&array[0]+1<<endl;//
return 0;
}
结果就一样了