有struct stu
{
int age;
char name[10];
...等等
}s[3]={5,“wzw”,....},*p;
for(p=s;p<s+3;p++)
判断语句是怎么判断的,我知道是一直循环从s[0]到s[2];但他是怎么判断的
c语言中指针和数组有非常紧密的联系,某种意义上说它们是同一个东西。
题目中声明了一个结构体数组:
struct stu s[3]
相当于声明了一个指针变量 s ,它指向数组的第一个元素,即:
s = &s[0]
p=s 即 p的初值为&s[0]
s+2 即 &s[2]
这样for循环中 p 的值从&s[0]到 &s[2]。
再对p进行取值操作,就从s[0]到s[2]。
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢。
在for循环中,首先结构体指针p赋值为数组s的首位,其效果等同于p = &s[0],然后每次循环,p++,实际上是指针p按照该数组元素的长度递增1,
即递增一个数组元素(即结构体)的内存单位个位置,指针移到&s[1]、&s[2]。