结构体补充:
后插
头删
尾删
共用体
有时需要使几种不同类型的变量存放到同一段内存单元中。例如,可把一个整型变量、一个字符型变量、一个实型变量放在同一个地址开始的内存单元中。以上3个变量在内存中占的字节数不同,但都从同一地址开始存放。几个变量互相覆盖,这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。
定义共用体类型变量的一般形式为:
成员会占据相同内存空间。彼此之间相互覆盖,空间大小按最大的算,按照最大字节数对齐,成员地址值相同。
可用来判断大小端
枚举
如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明枚举类型用enum开头。例如:
enum weekday(sun,mon,tue,wed,thu,fri,sat};
声明了一个枚举类型enum weekday,可以用此类型来定义变量。
1.在C编译中,对枚举元素按常量处理,故称枚举常量。它们不是变量,不能对它们赋值。
2.枚举元素作为常量,它们是有值的,C语言编译按定义时的顺序使它们的值为0,1,2…在上面定义中,sun的值为0,mon的值为1……sat的值为6。如果将mon初始化为4,则mon=4,printf(“%d\n”,mon);输出结果为5;
typedef
除了可以直接使用C提供的标准类型名(如int、char、float、double、long 等)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替已有的类型名。
如:
INT为类型名
为以前已有数据类型起的别名
结果为4
位运算
按位与:指定位清零
位运算要求操作数为整型或与整型相兼容的数(枚举也可以)
按位或
按位异或
两个比特位一样为0;不一样为1(指定位翻转)
同一个数字异或两次,还是数字本身
取反
为单目运算符
左移(最左边删除,右边补0)
右移:
无符号为逻辑右移(补0);
有符号为算术右移(i为正数补0,负数补1)