枚举:
一个一个列举出来,变量的值只限于列举出来的值的范围
作用:
1.提高代码的可读性
2.提高代码的安全性
枚举类型:
enum 枚举名
{ 列举各自值 (枚举元素--枚举常量) };
注意:
列举各种值 之间需要用逗号隔开 不需要写类型名
eg: enum fire
{ LITTLE_FIRE , MIDDILE_FIRE , LARGE_FIRE };
注意:
1.表示 定义了一种 枚举类型
2.枚举中逐个列举的值 默认是从0开始
如果有给定的值 则后续没有给值的 枚举成员依次 加1
3.枚举类型 本质 是一个int类型数据
4.枚举类型的变量 与整型类型的变量通用的
5.与 宏定义对比
区别:
使用阶段不同---宏定义---预处理阶段
---- 枚举 ----编译阶段 要检查语法
-----运行阶段 参与代码运行
可读性---都提高了可读性
---枚举 更能说明有相关性的一些值间关系
typedef -----本意 不是定义类型
------给类型起别名
int a ; 定义了一个int型变量a
typedef int a ; 此时 a是int 类型的一个别名
位运算:---c语言特点
-----可以直接操作二进制位
& ----与运算 ---位运算中
运算规则: 一假则假
应用:清0
eg: 0xaa 0x33
1010 1010
0011 0011
0010 0010 //结果 0x22
|----或运算
运算规则:一真则真
应用:置1
~ 取反
运算规则:真假相对
^ 异或
运算规则:相同为0,不同为1
应用:加密
交换(int a ,int b;
a=a^b; b=a^b; a=a^b )
注意:浮点数不能做位运算
<< 左移
写法: a<< n 表示将a这个数据 左移n位
0000 0001 左移1位 相当于乘2
0000 0010
注意: 最低位 补0
>> 右移
a>>n 表示将a这个数据 右移n位
0000 0001 右移1位 相当于除2
0000 0000
注意:
算术右移---看符号位---看数据类型
如果是有符号类型的数据 ,右移时,最高位补的是符号位
如果是无符号类型的数据 ,右移时,最高位补的是0
函数指针-----指向函数类型的指针(基类型为函数类型的指针)
指针函数-----返回值为指针类型的函数
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只是释放了空间---表示这块空间 又自由了
但是这块空间上的数据 并不会清0
3.不要多次free