作业帮 > 综合 > 作业

请教C语言一道指向二维数组指针的题,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/06 07:49:32
请教C语言一道指向二维数组指针的题,
有3个同学,各学4门课程,输出第n个同学的成绩.
错误的程序是这样的:
#include
void main()
{void search (float *p,int n);/*这里的 float *p 好像有问题*/
float score[3][4]={65,67,70,60,80,87,90,81,90,99,100,98};
search(score,2);
}
void search(float *p,int n));/*这里的 float *p 好像有问题*/
{int i;
printf("the score of No.%d are:\n",n);
for(i=0;i
一、你的 float score 数组定义的是:一个3行、4列的二维浮点数组,数组的元素为浮点数.如果你换个格式书写就清晰了!
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
在调用的过程中,score 就是这个数组的首地址,指向的是浮点数组{65,67,70,60,}.score + 1 指向的是数组{80,87,90,81,}.
二、你的 float *p 定义的是:一个指向浮点数的指针.这个是一维的.
在调用的过程中,float 指向的是 xx.一个浮点数字.
两个的定义不同,所以参数传递过程中会出错.
三、你的 float (*p)[4] 定义的是:一个指向含有四个元素的浮点数组的指针.
在调用的过程中,float 指向的是{xxx,xx,xx,xx,},由四个浮点数组成的数组.
这时两个定义相同,所以参数传递过程中没有错误.
四、有个建议,你的程序书写格式不清晰,不利于你纠错和修改,应该尽量的清晰、明确,不建议使用简化方式定义参数.
作为一个软件工作者,应该尽量使程序流畅、格式清晰、易读,这是一个软件工作者最基本的职业素养.
格式化后,程序如下,会清晰很多:
#include
void main()
{
void search (float (*p)[4],int n);/*这里的 float *p 好像有问题*/
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
search(score,2);
}
void search(float (*p)[4],int n)/*这里的 float *p 好像有问题*/
{
int i;
printf("the score of No.%d are:\n",n);
for(i=0;i