数组的两个特性:
数组不能被拷贝;
数组名会被转换成指针;
以下3中print()函数是等价的,编译器处理对函数的调用时只检查传入的参数是不是const int *;
void print(const int *);
void print(const int [ ]);//对编译器来说是一样的,这里主要是为了告诉使用者,函数的意图的作用于一个数组;
void print(const int [10 ]);//这里的维度表示我们期望数组含有多少个元素,但实际上不一定。
传入数组指针的时候,我们不知道数组的长度。常用的管理指针形参有以下3种技术:
1,使用标记指定数组长度
对于c风格的字符串,因为字符数组最后有个空字符,处理字符串的时候遇到空字符停止就行。
2,使用标准库规范
void print(const int * beg,const int * end);
需要提供数组的首指针和尾后指针;
3,显示的传递一个表示数组大小的形参
也可以用数组引用形参
void print(int (&a)[ 10] );
这时候只接受int[10]的实参;