1.函数参数
1.1 传传递
1.2 指针传递
1.3 引用传递
1.4 数组传递
- 背景:因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针。
- 数组传递本质:
void print(const int *);
void print(const int[]);
void print(const int[10]);
- 数组形参和const:当函数不需要对数组元素执行写操作的时候,数组形参应该是指向const的指针,只有当函数确实要改变元素值得时候,才把形参定义为指向非const的指针。
- 数组形参和引用:C++不允许声明引用的数组,原因有:首先引用必须被初始化,而数组并不能被另一个数组初始化或被另一个数组赋值,也就是说没有办法完成引用的初始化;其次引用不占用新的空间,因此根本就没有空间可以分配给引用。但是C++允许将变量定义为数组的引用,同时形参也可以是数组的引用。例如:
int arr[3] = {
2,3,4};
int (&ref)[3] = arr;
void print(int (&arr)[10]){
for(auto elem:arr)
cout<<elem<<' ';
}
int i=2;j[2]={
1,2};
int k[10]={
1,2,3,4,5,6,7,8,9,10};
print(&i);
print(j)