数组名和&数组名的区别
虽然数组名和&数组名的结果都是数组的首地址,但是他们的类型是不同的,看如下例子:
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(void){
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
cout << typeid(a).name() << ","<<typeid(&a).name() << endl;
system("pause");
return 0;
}
输出结果:
int [10],int (*)[10]
从结果可以看出,一个是int类型,一个是指向数组的指针类型。a+1的结果是在a的地址基础上加4,而&a+1的结果是在&a的地址的基础上加40,也就是整个数组的长度。
typeid 运算符用来获取一个表达式的类型信息。