链表、共用体和位运算

尾插

头删

尾删

双向链表

前驱指针

后继指针

循环链表

进程:正在被运行的程序

后续的节点在堆上,堆上由malloc申请的空间要释放,否则会造成内存泄漏

共用体:(公用内存)与结构体的用法很像,都需要自定义

在共用体内的成员,会共同占有相同的内存空间

内存中,叠在一起。都是往前挤第一块内存空间,所以他们的地址值是一样的

彼此之间,相互重叠覆盖,因此共用体中的有效元素只是最后传进去的变量的值

作用:判断计算机是大端还是小段

两种判断大小端的方法:

1、通过写入一个数,读取这个数的低位判断

2、通过共用体判断

共用体变量可以作为函数参数传递

通过指针传参

sizeof共用体的长度,按共用体中长度最大的来,但当字节数为奇数时,依然要按照两个字节对齐,提高运行效率

枚举(enum)

列举所有的可能性

enum  变量名

枚举的元素

};

枚举与int型兼容,在计算内存时按照整形变量计算,枚举只能枚举整形或者与整形兼容的类型

typedef定义类型

给已有的类型名起别名,

从此以后,INT不再是一个变量名,而是一个类型名

位运算

按位与(&):

作用是指定位清零

按位或(|):

指定位置1,其他位不变

按位异或(^):

指定位翻转(取反)

应用:不定义中间变量交换两个数

将一个数(i)与同一个数异或两次,仍会得到这个数本身(i)

取反(~):单目运算

左移(<<):

抛掉最高位,在后面补零

左右移的优先级低于算术运算,又高于与,或的优先级

指定位置零

判断某个比特位是1还是0:

与上一个除了那个比特位是一,剩下都是零的数

判断一个十六进制数有几个一

右移与左移移动的方向相反

右移运算分为算术右移和逻辑右移

逻辑右移和左移一样都是补零

但如果要移动的数据类型是有符号的数据类型

那么补什么数要看原来的数是正数还是负数

左移只有逻辑左移

为避免算数运算的出现,在进行位运算时,最好把数据类型定为无符号型unsigned

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值