结构体
结构体的定义
结构体的三种定义方式:
struct name{ 成员列表; };
typedef struct { 成员列表; }name;
typedef struct name1{ 成员列表; }name2;
结构体可当作变量来使用,与C语言自带的标准变量不同的是,它允许内部有多个不同的变量(可以为常见的变量(int、float等)、指针或者其他的结构体)。
例如:
struct base{ 成员列表; }; struct top{ base a; 成员列表; };
结构体变量的大小为字节对齐(后面的文档会讲)后所占空间的总和。
结构体的使用
例:
typedef struct {
float Chinese;
float Math;
float English;
}score;
typedef struct {
char name;
int number;
score *score; //结构体指针
}student;
student liming;
liming.name = liming;
liming.number = 1;
liming->score.Chinese = 81;//注意结构体指针的使用方式
liming->score.Math = 90;
liming->score.English = 90;
结构体还可以作为函数的形参和返回值。但是因为结构体作为函数形参会使函数的栈帧所占空间很大,浪费了栈空间,同时结构体作为返回值会拖累函数的返回速度,并且还会额外开销栈区空间,所以不建议直接将结构体本身带入函数,而是用结构体指针来代替结构体本身。