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

 我来答
折心灬小轩
2013-06-21 · TA获得超过543个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:112万
展开全部
数组为参数时会退化为一个二级指针传递,如图,可以将函数头部写成
void shuchu(int **array_num);
在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用
shuchu(a);

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

满意请采纳,不满意请追问
深海_蓝鱼
2013-06-21 · TA获得超过423个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:238万
展开全部

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

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

即:

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

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

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

函数shuchu() 也是一样,

 

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
2013-06-21 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450133
专业C/C++软件开发

向TA提问 私信TA
展开全部
在形参是数组的情况下,只要是数组,无论维数,实际上在调用函数时,传给函数的将是一个数组的首地址,以及维数等相关信息
也就是说,在函数执行过程中,并不会新开辟内存空间,而是形参实参共用同一段内存空间
所以,在这种情况下,函数内部对数组进行修改,其值会返回给实参
你的例子中调用部分有问题,不能这样
shuru(a[10][2])
而是
shuru(a)
因为a[10][2]代表数组a中的一个元素,而且是越界的
而a才是数组名
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户74930
2013-06-21 · 超过14用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:45.7万
展开全部
"数组为参数时会退化为一个二级指针传递"这个理解是不对的 二维数组的形参声明应该是 int(*array_num)[2]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
763401802
2013-06-21 · TA获得超过504个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:126万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式