C语言中关于指针的问题。请大神帮忙。困扰中

#include<stdio.h>voidmain(){voidaverage(float*p,intn);voidsearch(float(*p)[4],intn);f... #include<stdio.h>
void main()
{
void average(float *p,int n);
void search(float (*p)[4], int n);
float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
average(*score,12);
search(score,2);
}

void average(float *p,int n)
{
float *p_end;
float sum=0,aver;
p_end=p+n-1;
for(;p<=p_end;p++)
sum=sum+(*p);
aver=sum/n;
printf("%5.2f",aver);
printf("\n");
}
void search(float (*p)[4], int n)
{
int i;
for(i=0;i<4;i++)
{
printf("%5.1f",*(*(p+n)+i));
printf("\n");
}
}
1.为什么主函数中的average(*score,12)不能写成average(score,12)?
2.在定义第一个函数时,为什么其中的for循环不能写成for(;p<=p+11;p++),不定义指针变量p_end,直接for(;p<=p+11;p++)为什么不行啊?困扰了好久,请大神帮忙
注:第一个函数是求平均值。
第二个函数是输出第n个学生的成绩。
展开
 我来答
f4685461
2012-11-06 · TA获得超过630个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:176万
展开全部
1.
void average(float *p,int n);

这个的第一个参数是个一维指针
float score[3][4] 这是两个维度
average(score,12) 中是把一个2维的赋给一个一维指针 它消化不了啊。。。。
*score 其实就等于把 score[0] 给过去了 这才是一个维度
2.
for(;p<=p+11;p++)
你的P的值一直在变啊
p<=p+11 前面的P变大了 后面的P也++了啊 你永远也追不上啊
就像 年龄比你大11岁的人 不是你11年后就跟他一个岁数了。。。
lileitodev
2012-11-06 · TA获得超过159个赞
知道小有建树答主
回答量:171
采纳率:33%
帮助的人:111万
展开全部
1.score是行指针。*score就变成列指针。void average(float *p,int n);要求的参数是float *p,,而float score[3][4]就相当于中的数组名score就相当于双重指针,*score和float *p,才是相称的。
2.p是变量。p++时p是不断变化的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
就如我遇见你
2012-11-06 · TA获得超过126个赞
知道答主
回答量:79
采纳率:0%
帮助的人:17.5万
展开全部
1.为什么主函数中的average(*score,12)不能写成average(score,12)?
因为average定义的时候要求是指向浮点数的指针,score 是指向二维数组第一个数组首地址的指针,所以不能写成average(score,12)。

2.在定义第一个函数时,为什么其中的for循环不能写成for(;p<=p+11;p++),不定义指针变量p_end,直接for(;p<=p+11;p++)为什么不行啊?困扰了好久,请大神帮忙
注:第一个函数是求平均值。
第二个函数是输出第n个学生的成绩。

for(;p<=p+11;p++)
p一直在进行自增运算 他就会一直小于p+11 ,p<=p+11永远都成立,就是无限循环了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笃侠6A
2012-11-06 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3207万
展开全部
1.
average函数的原型为
void average(float *p,int n);
所以要求调用语句对应于p的实参为float *类型,而score的类型为float (*p)[4],类型不一致。

2. 如果写成 for(;p<=p+11;p++),则“水抬船高”,永远无法结束(p<=p+11永远成立)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式