抡不圆的题,ge men 8分 给您5 分 够意思吧

来源:百度知道 编辑:UC知道 时间:2024/05/26 11:32:37
#include <stdio.h>
void avg(float *p,int m)
{
float *p1;
float sum=0,aver;
p1=p+m-1;
for(;p<=p1;p++)//谁给解释下p<=p1,为什么不能用p<=p+m-1;
sum=sum+*p;
aver=sum/m;
printf("%5.2f",aver);
printf("\n");
}
void main()
{
float a[3][4]={89,51,69,48,75,86,92,81,72,94,75,79};
avg(*a,12);
}

p<=p+m-1;
里面p也会变的呀 你p++之后p+m-1也会++于是就死循环
但是先给p1后p1定值就不变了

因为每次循环你的指针p要变化,跟着(p+m+1)也变换,所以不能用这个,否则陷入死循环!