数组作为形参

时间:2022-07-20 19:48:39

数组的两个特性:

数组不能被拷贝;

数组名会被转换成指针;


以下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]的实参;