33,311
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
void average(float *p, int n);
void search(float(*p)[4], int n);
int main()
{ //三个学生,各学四门课,计算总平均成绩以及第n学生成绩
float a[3][4] = { { 65,67,70,60 },{ 80,87,90,81 },{ 90,99,100,98 } };
float *arr = &a[0][0];
average(arr, 12);
search(a, 2);
return 0;
}
void average(float *p, int n)
{
float sum = 0.0, aver;
float *end = p + n;
for (; p < end; p++)
sum = sum + *(p);
aver = sum / n;
printf("%f\n", aver);
}
void search(float (*p)[4], int n)
{
int i = 0;
for (i = 0; i <= 3; i++)
printf("%f\t", *(*(p + n) + i));
}
参考一下吧;
for (; p <= (p + n - 1); p++)
注意看一下p <= (p+n -1);
如果p++,那么<=两边的p是不是都变化了,这样岂不是就是无限循环了?无限循环就会越界,出现段错误;