6. 数组形参
6.1. 非引用
当数组以 非引用 类型传递,数组会悄悄退化为指针,形参复制的是这个指针的值(指向数组第一个元素)。通过该形参做的任何改变都是在修改数组元素本身。
1void func1(int arr[100])
2{
3 cout << sizeof(arr) << endl; // 指针的大小为4(32位编译器)
4 /*
5 function body
6 */
7}
8
9void func2(int *arr)
10{
11 cout << sizeof(arr) << endl; // 指针的大小为4(32位编译器)
12 /*
13 function body
14 */
15}
16
17int a[10] = {1,2,3};
18func2(a);
6.2. 引用
如果形参是数组的 引用 ,编译器不会将数组实参转化为指针,而是传递数组的引用本身。编译器会检查数组实参的大小与形参是否匹配。
1void func1(int (&arr)[10])
2{
3 cout << sizeof(arr) << endl; // 大小为4*10=40(32位编译器)
4 /*
5 function body
6 */
7}
8
9int a[10] = {1,2,3};
10func2(a);