一、尾插
2.头删
、
3.尾删
二、共用体(union 会共同占用相同的内存空间)
-
内存大小:共用体的大小是其最大成员的大小。可以使用
sizeof
来获取共用体的大小。printf("Size of union: %zu\n", sizeof(data)); // 输出 20(对于这个例子,如果 str 是最大)
-
有效成员:在任何时候,只有最后写入的成员是有效的。因此,读取其他成员时应该小心,以免得到未定义行为。
-
初始化:共用体可以在声明时初始化。
union Data data = { .i = 10 }; // 初始化整数成员
-
嵌套共用体:共用体可以嵌套在结构体中,或在其他共用体内部。
三、枚举类型(enum)
用于定义一组命名整型常量。枚举使得代码更具可读性和可维护性,通常用于表示一组相关的状态或选项。
四、typedef(给已有的数据类型起个别名)
typedef
是 一个关键字,用于给已有类型定义一个新的别名;
五、位运算(操作数为整形和与整形相兼容的类型)
1. 位与运算(指定位清零)
- 操作符:
&
- 描述:两个位同时为1时,结果为1,否则为0。
int a = 5; // 0101 int b = 3; // 0011 int result = a & b; // result = 1 (0001)
2. 位或运算(指定位置一)
- 操作符:
|
- 描述:两个位有一个为1时,结果为1;只有两个位都为0时,结果为0。
int a = 5; // 0101 int b = 3; // 0011 int result = a | b; // result = 7 (0111)
3. 位异或运算
- 操作符:
^
- 描述:两个位不同则结果为1,相同则结果为0。
int a = 5; // 0101 int b = 3; // 0011 int result = a ^ b; // result = 6 (0110)
4. 位非运算
- 操作符:
~
- 描述:对每一位进行取反操作。
int a = 5; // 0101 int result = ~a; // result = -6 (在32位系统中结果为 1111...1010)
5. 左移运算
- 操作符:
<<
- 描述:将位向左移动,低位补零,相当于乘以2的幂。
int a = 5; // 0101 int result = a << 1; // result = 10 (1010)
6. 右移运算
- 操作符:
>>
- 描述:将位向右移动,高位根据符号扩展(对于负数,补1;对于正数,补0)。
int a = 5; // 0101 int result = a >> 1; // result = 2 (0010)