自定义类型一、结构体
1.存在的意义
- 静态的结构体可以节省很多内存和运行时间
- 增强程序的可读性和稳定性
2.结构体声明
例如描述一个学生结构体
struct Stu//结构体名
{
char name[20];
int age;
char sex[5];
char id[20];
};//变量列表
3.结构体的自引用(链表节点的定义)
struct Node
{
int data;//数据节点
struct Node* next;//指针节点
};
结构体A中定义了一个指针b,该指针指向一个结构体A类型。为什么可以这么做呢?因为编译器在编译时已经知道一个指针所占的空间长度可以为其分配空间。这样就可以实现结构体自己调用自己。
4.结构体变量的定义和初始化
- 在声明的同时定义变量
struct Point
{
int x;
int y;
}p1;//在声明的同时定义结构体变量p1
- 单独定义结构体变量p2
struct Point p2;
- 定义变量的同时赋值
struct Point p3 = {x,y};
5.结构体的内存对齐
- 为什么要内存对齐
性能原因:处理器访问内存时是按照固定大小对数据进行取值,对齐内 存只需要访问一次,而未对其的内存则需要两次 - 内存如何对齐
- 内存对齐练习
对齐数得出是int类型的四个字节;所以最后是16