多重结构体数组
#include<stdio.h>
#define MAXLEN 15
struct students{
char name[MAXLEN];
int scores;
float heights;
};
struct schools{
struct students class;
char school_name[MAXLEN];
int school_age;
};
int main(){
struct students a[2] = {
{ "t.zhenhui", 98, 170.0 },
{ "c.ran", 55, 168.0 }
};
printf("%s %d %f\n", a[0].name, a[0].scores, a[0].heights);
struct schools huaxing = {
{"c.shengyang", 65, 165.0}, "wanzhong", 88};
printf("%s %d %s %d\n", huaxing.class.name, huaxing.class.scores, huaxing.school_name, huaxing.school_age);
return 0;
}
运行结果
简化版写法
#include<stdio.h>
#define MAXLEN 15
struct students{
char name[MAXLEN];
int scores;
float heights;
}a[2] = {
{ "t.zhenhui", 98, 170.0 },
{ "c.ran", 55, 168.0 }};
struct schools{
struct students class;
char school_name[MAXLEN];
int school_age;
}huaxing = {{ "c.shengyang", 65, 165.0 }, "wanzhong", 88 };
int main(){
printf("%s %d %f\n", a[0].name, a[0].scores, a[0].heights);
printf("%s %d %s %d\n", huaxing.class.name, huaxing.class.scores, huaxing.school_name, huaxing.school_age);
}
运行结果一样。
小结1:定义结构体用分号,结构体内元素赋值用逗号隔开,打印格式不要错
指向结构的指针
#include<stdio.h>
struct students{
char *name;
int scores;
float heights;
}a[2] = {
{ "t.zhenhui", 98, 170.0 },
{ "c.ran", 55, 168.0 }};
struct schools{
struct students class;
char *school_name;
int school_age;
}huaxing = {{ "c.shengyang", 65, 165.0 }, "wanzhong", 88 };
int main(){
struct students *gg;
gg = &a[0];
printf("%s %d %f\n", gg->name, (*gg).scores, gg->heights);
// t.zhenhui 98 170.0
gg += 1;
printf("%s %d %f\n", gg->name, (*gg).scores, gg->heights);
// c.ran 55 168.0
struct schools *ncu;
ncu = &huaxing;
printf("%s %d %s %d\n", ncu->class.name, (*ncu).class.scores, ncu->school_name, ncu->school_age);
}