结构体
概念
结构体是一个或多个成员的集合,各个成员之间可能具有不同的数据类型
结构体的声明
声明结构体时,必须列出它包含的所有成员,具体包括每个成员的名字和类型
栗子1如下图,声明了一个x变量的结构体,它包含三个成员变量:一个整数,一个字符,一个浮点数
struct { int a; char b; float c; } x;
栗子2如下图,声明了y和z,y是一个数组,包含10个结构体;z是一个指针,指向这个类型的结构体
struct { int a; char b; float c; } y[10], *z;
结构体的初始化
struct date { int year; int month; int day; }; //init method1 struct date today1 = {2020, 01, 28}; //init method2 struct date today2 = {.year=2020, .month=01, .day=28};
结构体的操作
对于整个结构体,可以赋值,取地址,作为参数传递给函数,结构体作为函数的返回值
结构作为函数参数,函数会在内部新建一个结构变量,并复制调用者的结构的值
结构指针
结构变量的名字并不是结构变量的地址,所以必须用&运算符
用->表示指针所指向的结构变量的成员
结构指针作为参数的好处:传入传出只是一个指针的大小
如果想要传入的结构不被函数修改:const struct point *p
返回传入的指针是一种套路