如下两个代码,第一个代码会停止运行,而第二个能得出正确结果。。。这两个代码的不同之处不应该是等价的吗?为什么会造成这种完全相反的结果?
#include<stdio.h>
void main()
{
void ave(float *p,int m);
float a[3][4]={{65,66,67,68},{78,79,80,71},{54,78,65,54}};
ave(*a,12);
}
void ave(float *p,int m)
{
float aver=0;
for(;p<(p+m);p++) //与下一个代码的不同之处
aver=aver+(*p);
aver=aver/m;
printf("平均分为:%4.2f\n",aver);
}
#include<stdio.h>
void main()
{
void ave(float *p,int m);
float a[3][4]={{65,66,67,68},{78,79,80,71},{54,78,65,54}};
ave(*a,12);
}
void ave(float *p,int m)
{
float aver=0;
float *end=p+m; //与上个代码的不同之处
for(;p<end;p++)
aver=aver+(*p);
aver=aver/m;
printf("平均分为:%4.2f\n",aver);
}