尾插
尾删
头删
共用体
不同的类型存放到同一段内存单元中。所占内存字节数不同,但均从同一地址开始,几个变量相互覆盖。
一般形式:
union 共用体名
{成员表列
}变量表列;
特点:
(1)同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一种,而不是同时存放几种。也就是说,每一瞬时只有一个成员起作用,其他的成员不起作用,即不是同时都存在和起作用。
(2)共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。
(3)共用体变量的地址和它的各成员的地址都是同一地址。
(4)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,又不能在定义共用体变量时对它初始化。
(5)不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可以使用指向共用体变量的指针
(6)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型定义中,数组也可以作为共用体的成员。
枚举:
将变量的值一一列举,变量的值仅限于列举出来的值范围内
说明:
(1)在C编译中,对枚举元素按常量处理,故称枚举常量。它们不是变量,不能对它们赋值。
(2)枚举元素作为常量﹐它们是有值的,C语言编译按定义时的顺序使它们的值为0,1,2,3……
定义sun为 7, mon为1,以后顺序加1,sat为6。
(3〉枚举值可以用来作判断比较。
枚举值的比较规则是按其在定义时的顺序号比较的。
(4)一个整数不能直接赋给一个枚举变量。
typdef
可以改变类型的名称,为已有数据类型起别名,使两名称具有相同效果。
位运算
& 指定位清零;
| 指定位置1 ;
^ : (1)、使特定位翻转,不同取1,相同取0;
(2)、交换两值,不用临时变量
例:int i =3,j=5;
i ^= j;
j ^= i;
i ^= j;
~ 所有位都取反
<< 左移 ,按位补零;
>> 右移 , unsigned (逻辑右移)按位补零;有符号,正数补1,负数补0;