枚举,typedef,位运算,堆空间操作函数

枚举:

定义:“枚举”是指将变量的值一个一个列举出来,变量的值只限于列举出来的值的范围。


作用:

1.为了提高代码可读性
2.提高代码安全性


枚举类型:

enum 枚举名
{
	列举各种值,//注意用逗号隔开不是分号
};

eg:
enum fire
{
	large_fire,//没有赋值其默认值为0
	mid_fire,//其值默认在上一个原基础上+1 = ‘1’
	small_dire,
};

enum fire
{
	large_fire = 8//赋值为8
	mid_fire,//其值默认在上一个原基础上+1 = ‘9’
	small_dire,//10
};

注意:
表示定义了一个枚举类型,枚举中逐个列举的值,默认时以0开始的。
如果有给定的值,则后续没给值的枚举成员是上一个成员逐个加1.


枚举类型的使用:

1.使用成员变量:
枚举类型不需要声明就可以使用其成员变量(一般将其定义在全局区域里方便系统识别),其成员变量名在代码之中指的是其对应的在定义枚举类型是赋的值。

eg:
按上方最近一个例子来说
printf("%d",large_fire);
其打印值为8

2.使用类型定义变量:
当使用该类型定义变量时,其类型相当于一个int型的值,任何int型的操作都可以实现。
枚举类型的变量与整形类型的变量通用。

eg:
enum fire s;
s = 1;
printf("sizeof(s) = %d,a = %d",sizeof(s),s);
以上打印结果为41

与宏定义的区别:

使用阶段不同:
宏定义—— 预处理阶段。
枚举——编译阶段要检查语法,执行阶段参与代码运行。

可读性:
都为了提高代码可读性,枚举更能说明有相关性的一些值间关系。


typedef:

定义:

本意不是定义类型,而是给类型起别名。

int s;
typedef int a;//此时a是int的一种别名,而不是变量
int s 等价 a s;

对于结构体的使用:
typedef struct student S_stu;
则定义struct student 类型是就可以用S_student代替。
eg:
S_student a: ==  struct student a;

位运算(c语言特点):

与:

符号:&
规则:一假则假

或:

符号:|
规则:一真则真

非:

符号:~
规则:真假相对

异或:

符号:^
规则:相同为假,不同为真

左移:

符号:<<
规则:表示将一个数据按位进行左移,左移一位相当于乘2.,其中最低位补0

写法:
a<<n;//表示将一个数按位左移n位

右移:

符号:>>
规则:表示将一个数据按位进行右移,右移一位相当于除2.
补零方式划分为:
1.算数右移:如果是有符号位,则右移是按符号位的值来进行高位补充
2.逻辑右移:如果是无符号位,则右移是按补0来进行高位补充

写法:
a<<n;//表示将一个数按位左移n位

应用:
1.加密数据
2.交换数据

注意:浮点数不能进行位运算。

指针函数:

char *strcpy (char *dest,const char *pc)

函数指针与指针函数的区别:

函数指针:指的是指向函数的指针//基类型是函数类型的指针
指针函数:返回值为指针类型的函数。

堆空间操作函数:

堆空间申请:

定义:申请一块堆上的空间,系统运行时就不会使用该空间来进行数据操作

void *malloc(size_t size);//size_t size 指的是所要申请的空间字节数。

堆空间释放函数:

定义:释放堆上申请的空间,系统运行时就可以使用该空间来进行数据操作

void free(void *ptr);//void *ptr指的是所要释放空间的地址
					 //*ptr一定是之前申请到堆上空间的地址

注意:

1.free释放后的空间:
(1).一般不再使用。
(2).指向这块空间的指针——即野指针。
(3).free之后对应空间上的内容不一定被修改——但是也不要再使用。

2.空间操作函数特点:
1.malloc() 和free()成对出现。
2.free只是释放了空间,表示这一块空间又自由了,但是这块空间上数据并不会清零。
3. 不要多次free

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值