将二维数组作为参数的函数,数组名被视为地址,所以形参就应该是一个指针。
sum(int arr[][4],int size);
sum(int (*arr)[4],int size);
以上这两种表示方式是相同的
int *arr[4]
表示的是由4个指向int的指针组成的数组,而不是由一个指向4个int组成的数组的指针。因此括号是很必要的。
同样我们能看出,arr都是指针而非数组,是由4个int组成的数组。
函数参数中的指针类型指定了数组的列数,因此sum()函数只能接受由4列组成的数组,但是长度却是任意的。
因此在传递参数时候,如下形式是非法的:
sum(int (*arr)[4],int size);
同样的,如下形式是等价的
arr[r][c] = * ( *(arr+r)+c)
最后,在函数声明形参arr时不能用const关键字,因为arr是指向指针的指针。
本文探讨了在C++中如何将二维数组作为函数参数,指出数组名被视为地址,形参应为指针。强调了int *arr[4]表示4个int指针数组,而非4个int的数组指针,并解释了在函数参数中指针类型指定数组列数。同时,指出了使用const关键字在声明形参arr时的不适用性。
582

被折叠的 条评论
为什么被折叠?



