枚举
枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内
作用:
1.提高代码可读性
2.提高代码安全性
枚举类型
语法:
enum 枚举名
{
列举各种值 //枚举常量
};
注意:列举的各种值之间用逗号隔开,不需要写类型名
eg:
enum fire
{
LITTLE_FIRE,
MIDDILE_FIRE,
LARGE_FIRE,
};
注:
1.表示定义了一种枚举类型
2.枚举中逐个列举的值,默认是从0开始,如果有给定的值,则后续没有给定的值一次加1
3.枚举的本质实际上是Int类型的数据
4.枚举类型的变量与整形类型的变量是通用的
5.与宏定义对比
区别:
a.使用阶段不同
宏定义 -- 预处理阶段
枚举类型 -- 编译阶段 要检查语法,运行阶段 参与代码运行
b.在可读性方面
都提高了可读性,但枚举更能说明有相关性的一些值间关系
typedef -- 给类型起别名
位运算 -- C语言特点
可以指针操作二进制位
& 按位与 //清0
运算规则:一假则假
eg:
0xaa & 0x33
1 0 1 0 1 0 1 0
0 0 1 0 0 0 1 0
---------------
0 0 1 0 0 0 1 0 - 0x22
| 按位或 //置1
运算规则:一真则真
~ 取反
运算规则:真假相对
^ 异或
运算规则:相同为0,不同为1
<< 左移
写法:
a<<n //表示将a这个数据左移n位
>> 右移
a>>n //表示将a这个数据右移n位
算数右移:当数据类型为有符号类型,右移时,最高位补符号位,无符号类型,右移时,最高位补0
注意:
1.浮点数不能做位运算
函数指针 指向函数类型的指针
指针函数 返回值为指针类型的函数
char *strcpy(char *dest,const char src);
堆上的空间
void *malloc(size_t size);
功能:在堆上开辟一片空间
参数:size--表示申请空间的大小,单位为字节
返回值:成功 返回申请到内存空间的地址
失败 返回NULL
void free(void *ptr);
功能:释放之前申请的堆上的空间
参数:ptr -- 是之前申请的堆上空间的地址
free释放后的空间
1.一般不在使用
2.指向这块空间的指针 --- 是个野指针
3.free之后对应空间上的内容也不要使用
注意
1.成对出现
2.free只是释放了空间 -- 表示这块空间又自由了,但是这块空间上的数据不会清零
3.不要多次free