C语言问题,请问二维数组的函数参数是怎么传递的?

如题所述

数组为参数时会退化为一个二级指针传递,如图,可以将函数头部写成
void shuchu(int **array_num);
在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用
shuchu(a);

另外,一个建议:不要在传参时忽略数组的长度,最好显式的以参数的形式传递给函数
或者,在数组中做标志,在函数中使用时可以根据标志自行分出维度

满意请采纳,不满意请追问
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-21

你好!关于二维数组传参问题,

在调用的时候直接传数组指针即可,

即:

void main()
{
int a[10][2];
shuru(a);
shuchu(a);
}

函数形参有两种写法,可以写成

void shuru(int (*array_num)[2]){}
//或者

void shuru(int array_num[][2]){}

函数shuchu() 也是一样,

 

望采纳,如有不明白请追问谢谢!

第2个回答  2013-06-21
在形参是数组的情况下,只要是数组,无论维数,实际上在调用函数时,传给函数的将是一个数组的首地址,以及维数等相关信息
也就是说,在函数执行过程中,并不会新开辟内存空间,而是形参实参共用同一段内存空间
所以,在这种情况下,函数内部对数组进行修改,其值会返回给实参
你的例子中调用部分有问题,不能这样
shuru(a[10][2])
而是
shuru(a)
因为a[10][2]代表数组a中的一个元素,而且是越界的
而a才是数组名本回答被网友采纳
第3个回答  2013-06-21
"数组为参数时会退化为一个二级指针传递"这个理解是不对的 二维数组的形参声明应该是 int(*array_num)[2]
第4个回答  2013-06-21

相似回答