⼆维数组作为函数形参的函数声明
如果我们需要编写⼀个处理⼆维数组的函数,那么这个函数原型应该如何声明呢?
⾸先,我们应该牢记:数组名被视为其地址,因此,相应的形参是⼀个指针。例如,假设有如下的代码:
那么sun 函数的原型应该如何声明呢?为什么将⾏数3作为参数,⽽不将列数4作为参数呢?
我们可以这样理解:data 是⼀个数组名,该数组有3个元素。⽽这3个元素本⾝都是⼜4个 int 组成的数组。因此 data 的类型是 指向由4个int 组成的数组的指针。
因此正确的 sum 原型如下:
还有另外⼀种声明格式,含义与上述正确原型完全相同,但是可读性更强:
上述2个原型都指出,arr 是指针⽽不是数组。还需要注意的是:int arr [ ] [4] 的含义就是: arr 是指向由4个 int 构成的数组的指针。因此,指针类型指定了列数,也就是说:函数形参已经确定了实参数组的列数,这就是为什么没有将列数作为独⽴的函数参数进⾏传递的原因 。[cpp]
01. int data[3][4] = { {1, 2, 3, 4}, {5, 5, 7, 8}, {9, 10, 11, 12} } 02. int total = sum(data, 3); [cpp]
01. int sum( int (*arr) [4], int size); 02.
//其中的括号是必不可少的,因为下⾯的声明将声明⼀个由四个指向int 的指针组成的数组,⽽不是⼀个指向由4个int 组成的数组的指针。 03. 04. int *arr[4]; //声明了⼀个指针数组,这个数组包含4个int 指针变量 05. int (*arr)[4] //声明了⼀个指针变量,这个指针指向由4个int 组成的数组
[cpp]指针与二维数组
01. int sum (int arr[][4], int size );
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论