关于结构体成员的引用有这样的规律:
箭头(->):左边必须为指针;(注意其实不是箭头而是两个符号)
点号(.):左边必须为实体。
那么如果一个结构体指针引用一个成员,这个成员又是一个结构体(并且是一个实体),那么如果要引用这个成员的成员要怎么办呢?
经过实验发现,依然遵循上面的规则即:箭头左边必须是指针,实体一定要用点号引用。比如:
一开始都用箭头即c->s1->age
#include "stdio.h"
int main()
{
struct student{
int age;
int class_;
};
struct class2{
struct student s1;
};
struct class2 *c;
struct class2 cc;
cc.s1.age=9;
cc.s1.class_=2;
c=&cc;
printf("%d",c->s1->age);
return 0;
}
出现错误。
如果把代码改为c->s1.age,代码如下:
#include "stdio.h"
int main()
{
struct student{
int age;
int class_;
};
struct class2{
struct student s1;
};
struct class2 *c;
struct class2 cc;
cc.s1.age=9;
cc.s1.class_=2;
c=&cc;
printf("%d",c->s1.age);
return 0;
}
则编译通过得到运行结果。