如果我们需要编写一个处理二维数组的函数,那么这个函数原型应该如何声明呢?
首先,我们应该牢记:数组名被视为其地址,因此,相应的形参是一个指针。例如,假设有如下的代码:
那么sun函数的原型应该如何声明呢?为什么将行数3作为参数,而不将列数4作为参数呢?
我们可以这样理解:data 是一个数组名,该数组有3个元素。而这3个元素本身都是又4个 int 组成的数组。因此 data 的类型是 指向由4个int组成的数组的指针。
因此正确的 sum 原型如下:
还有另外一种声明格式,含义与上述正确原型完全相同,但是可读性更强:
上述2个原型都指出,arr 是指针而不是数组。还需要注意的是:int arr [ ] [4] 的含义就是: arr 是指向由4个 int 构成的数组的指针。因此,指针类型指定了列数,也就是说:函数形参已经确定了实参数组的列数,这就是为什么没有将列数作为独立的函数参数进行传递的原因 。