为什么等于270.00而不是278.00?


#include 
struct STU
 {char name[10];
float score;};
main ()
 {struct STU s[3]={{"Zhang",90},{"Li",95},
{"Wang",93}},*p=s;
int i;
float sum=0;
for(i=0;i<3;i++)sum=sum+p->score;
printf ("%6.2f\n", sum);
}

*p=s,p指向s数组开头,for循环并没有使p移动,也就是p一直指向s开头,循环3次sum=sum+p->score,实际上是s[0]相加了3次,就是270。

img


你这里p就没变过,一直指向s[0] ,90 * 3 当然是270了

因为初始时,指针变量p是指向结构体中的第一个变量的;在for循环中,并没有改变指针p指向的地址,所以三次循环,都是对它指向的第一个变量的成员进行运算,即90相加三次。