1.C++将数组名解释为其第一个元素的地址 即:a == &a[0]
2.对数组名使用sizeof将得到整个数组的长度(以字节为单位)
3.&a返回的是整个数组的地址
4.将数组地址作为函数参数可以节省复制整个数组所需的内存和时间
二、二维数组与指针
int data[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int total = sum(data,3);
sum函数的原型是什么?调用函数时为什么将二维数组中的列数作为参数,而不是行数?
data本身类型就是指向4个int类型的数组的指针,sum正确的函数原型是int sum(int (*arr)[4],int size);
说到这,就说一下数组指针与指针数组的区别
数组指针:
int (*p)[n],()的优先级高,说明p是一个指针,指向一个整型的一维数组,该一维数组的长度为n。
int data[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};int (*p)[4];
p=data; //将该二维数组的首地址赋给p,data[0]或者&data[0][0]
p++;//将跨过p[0][],指向p[1][]
指针数组:
int *p[n],有n个元素的一维数组,每个元素都是一个指针。
int *p[3];
p = data; //此赋值方法是错误的,因为p是一个未知的表示,只存在p[0],p[1],p[2].....用来存放变量地址。
for(i=0;i<3;i++)
p[i]=a[i] //*p = *a; *(p + 1) = *(a + 1);与此种赋值方法一样