之前的笔记搬运
共用体类型:
1 | typedef union |
共用体也称联合体
union中可以定义多个成员,union的大小由最大的成员的大小决定
union成员共享同一块大小的内存,一次只能使用其中的一个成员。
对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存。但前提是成员所占字节数相同,当成员所占字节数不同时只会覆盖相应字节上的值,比如对char成员赋值就不会把整个int成员覆盖掉,因为char只占一个字节,而int占四个字节)
联合体union的存放顺序是所有成员都从低地址开始存放的。
在公用体里定义无名结构体, 可以按自己的需求, 把一个值拆分操作
枚举类型:
1 | enum 枚举名 { 成员1, 成员2, 成员3, .... }; |
枚举类型的本质就是带作用域的宏, 枚举的成员都是int型, 如果不进行初始化赋值的话,
第一个变量就是0, 之后的每次递增1
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
(1)枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
零散笔记:
结构体访问成员的时候, 并不是直接访问成员的地址, 而是通过结构体首地址 +
偏移来进行访问成员的库函数中的offsetof可以直接求出结构体偏移
结构体中可以创建无名结构体, 访问时可以直接通过一层偏移来访问.
举例:
1 | typedef struct stTest |
上面定义的结构体中, 又定义了一个结构体,
内结构体有名字的话, 访问其中的变量则是: 外结构体名.内结构体名.结构体变量,
如果内结构体无名的话, 则是: 外结构体.结构体变量, 也就是test.ch
就可以访问内结构体的变量
- C++中使用 “::” 符号可以在符号前的作用域 寻找符号后的内容