C语言二维数组传参与指针的问题?

定义了一个floatscore[][5]={{68,57,99,82,93},{69,71,52,86,57},{98,92,95,96,99},{86,75,86,84... 定义了一个float score[][5]={{68,57,99,82,93},{69,71,52,86,57},{98,92,95,96,99},{86,75,86,84,79}};存放4个学生的5门成绩,写一个函数求所有学生第一门成绩的平均分。定义函数float average(float *a),调用的时候用average(*score);我的理解是形参a现在指向的是score[0]的首地址,我需要score[0][0],score[1][0],score[2][0],score[3][0],那么&a将其转换为score二维数组的首地址(现在变为行指针),再用&a+i换行,最终的数据用*(*(&a+i)),请问错误出在哪里 展开
 我来答
White_MouseYBZ
2020-02-15 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6655万
展开全部
float *a这样声明函数形参,那样调用,a是score[0]的地址,但&a却不是score[0]那一行的行地址。因为a是函数的float *型局部变量,&a只是函数中存放a的地址,与score无关。这样声明虽然能做,但要计算下标,很麻烦,不提倡。最简单的写法是把函数形参声明成float (*a)[5],调用时实参写score,这样就可以在函数中按二维数组随意操作了。
(若帮助了你,请采纳)
追问
那也就是说我要是想用&将列指针变成行指针的话只能在实参上进行,不能在形参上进行是吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式