结构体总结
目录
1.普通结构体
struct name(结构体名){
结构体成员
};
2.定义结构体并同时建立变量
struct name(结构体名){
结构体成员
}实例变量;
3.匿名结构体
struct{
结构体成员
}实例变量;
4.typedef重命名
typedef struct name1结构体名){
结构体成员
}name2(重新定义的名字);
name2=struct name1
5.typedef省略结构体名字
typedef struct {
结构体成员
}name2(重新定义的名字);
6.结构体数组
和创建普通数组一样创建结构体数组即可
7.结构体指针
首先定义一个结构体指针,但此时只是分配了一个地址,结构体成员变量并没有分配空间,因此使用malloc函数动态分配地址, 返回值是一个void*,因此要强转成你要的类型指针。
结构体成员变量赋值:
假如n是一个结构体指针,*n就是这个实际结构体, (*n).成员名 就可以给结构体成员赋值或者更改,此外C语言为了简便,单独规定了结构体指针的定义方式 n->成员名。两种都是可以的;
8.结构体嵌套
结构体的成员变量当然可以包含结构体了
9.结构体链表(头插法)
链表就是结构体的指针指向下一个结构体,其存储不连续,是分布式的,因此读取速度相对数组来说慢的多。定义一个结构体,其结构体成员变量中包括本身的一个结构体指针,因此可以给该结构体变量赋值,赋的值又是一个结构体指针,里面又有一个结构体指针类型的结构体成员,以此类推产生链表。C++的STL库有list库,使用十分方便;
10.结构体中的函数指针
11.结构体的初始化列表
12.结构的的构造函数
13.结构体重载运算符
14结构体对齐规则
一、结构体对齐规则
1、第一个成员在与结构体偏移量为0的地址处;
2、其他成员变量要与自身类型的整数倍地址处对齐;
3、结构体总大小为要与 “处理器字节数与成员类型所占字节数最大的最小值” 的整数倍对齐;
4、如果出现嵌套情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对\n齐数(含嵌套结构体的对齐数)的整数倍。
5、#pragma pack(n) 可以用来控制默认对齐数的大小
- 点赞
- 收藏
- 关注作者
评论(0)