一、结构体struct
- 结构体是一些值的集合,这些值称为成员变量。每个成员可以是不同类型的变量。
- 结构体所占内存大小为其成员所占内存之和。空结构体所占内存大小为1字节。
- 柔性数组,结构体最后一个成员允许是未知大小的数组,用malloc函数进行动态内存分配。
- 结构体的声明:
//例如描述一个学生:
struct Stu
{
char name[20];
int age;
char sex[5];
char id[20];
};
//特殊的声明:在声明结构的时候可以不完全的声明
//例如:匿名的结构体类型
struct
{
int a;
char b;
float c;
}x;
//结构体的成员可以是标量、数组、指针,甚至是其他结构体。
//结构体成员的访问:结构体变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数。
struct Stu s;//定义结构体变量
s.age=20;//对成员进行定义
//结构体访问指向变量的成员,当一个结构体变量为指针变量时,如何访问?
struct Stu *ps;
//两种方式:
(*ps).age=10;
ps->age=10;
5.结构的自引用:
//结构体的自引用一定通过指针
typedef struct Node
{
int data;
struct Node* next;
}Node;
6 结构的不完整声明
struct A
{
int _a;
struct B* pb;
};
struct B
{
int _b;
struct A* pa;
};
//上述为不完整的声明,不知道A与B谁先放在前面