1 结构体定义与声明
1.1 定义结构体类型和声明结构体变量
struct Node{
int data;
struct Node *next
}; //定义一个结构体类型
struct Node node2; //声明一个结构体变量
1.2 定义结构体类型并声明结构体变量
struct Node{
int data;
struct Node *next
}node2; //定义一个结构体类型,并声明一个结构体变量
1.3 使用typedef定义结构体类型并声明结构体变量
typedef struct Str_Node{
int data;
struct Node *next
}Node; //定义一个结构体类型,并将struct Str_Nodechng 重命名为 Node,后面声明结构体变量时可以直接使用Node ***
Node node2; //声明一个结构体变量,相当于struct Str_Node node2
struct Str_Node node1 //声明一个结构体变量 如果不用这种方式,那么Str_Node也可以省略掉
2 结构体四字节对齐
1 案例一
struct Str_node{
char a; //4字节
int b; //1字节
char c; //8字节
}str_node;
struct Str_node str_node;
len = sizeof(str_node); //12, a和c各补齐后面的三个字节,形成四字节对齐
2 案例二
struct Str_node{
char a; //4字节
char b; //1字节
int c; //8字节
}str_node;
struct Str_node str_node;
len = sizeof(str_node); //8, a和b占用2个字节,再补齐后面2个字节,形成四字节对齐
3 案例三
struct Str_node{
char a; //4字节
char b; //4字节
char c; //4字节
char d; //4字节
char e; //1字节
int f; //8字节
}str_node;
struct Str_node str_node;
len = sizeof(str_node); //12, a,b,c,d共占4个字节,d补齐后面3个字节,形成四字节对齐
4 总结
一般默认是四字节对齐,如果想节省内存不需要四字节对,可以在定义结构体之前加入以下伪指令:
#pragma pack(1) //设置1字节对齐