C语言深度解剖(第3版)笔记

阅读使人充实,会谈使人敏捷,写作与笔记使人精确。 —— 培根

康奈尔笔记法(Cornell Notes System)是由美国康奈尔大学教授沃尔特·波克发明的一种笔记方法。

将笔记纸分为 3 个栏目:笔记、关键词、总结,来高效记笔记,并便于复习巩固知识点。实际操作:

  1. 用简洁的语句在笔记栏记下重点知识。

  2. 将笔记栏中的知识点提炼为关键词和要点,写在关键词栏。在总结栏写下本次学习总结。

  3. 遮盖笔记栏的内容,通过关键词栏的要点概括,复述出笔记内容来巩固知识。

以下为不熟练的C语言知识,因此记录下来:

关键词

  • register

  • static

  • 不同数据类型的计算

  • sizeof()

  • float变量与0比大小

  • switch case

  • for循环嵌套

  • const

  • volatile

  • 空结构体

  • 柔性数组

  • union

  • 大小端模式

  • #define

  • 数组名

笔记栏

  1. 通过register修饰的变量不需要通过内存寻址查找,因此效率极高,可以用于for循环中。但 register 变量必须是一个单个的值,并且其长度应小于或等于整型的长度。 而且 register 变量可能不存放在内存中,所以不能用取址运算符“&”来获取 register 变量的地址。

  2. static非常常见,主要有以下两个作用(C++中有三个):

    1. 修改作用域(仅能在本文件中使用)

      1. 静态全局变量:作用域是从定义之处开始,到文件结尾结束

      2. 静态局部变量:不会随函数消失

    2. 修饰函数(外部文件不能调用该函数)

  3. 不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展

  4. sizeof(数组名) = member_size * length sizeof(地址) = 4(32位系统) / 8(64位系统)

  5. float变量与0比大小,实际上会把0转换成0.0

  6. case后边只能是整型或字符型的常量或常量表达式;case的排序,一般把正常情况放前面,异常情况放后面

  7. 最长的循环放内层,短循环放外层,以减少 CPU 跨切循环层的次数

  8. const不是修饰常量,而是修饰只读变量。编译器通常不为普通 const 只读变量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率也很高。

  9. 遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。一般是修饰寄存器变量或者表示一个端口数据或者是多个线程的共享数据

    1. const volatile int i=10;这是合法的,声明了一个既只读又易变的整型变量i,表示它的值是只读的,但是可能会在未知的时间发生变化。

  10. 空结构体size大小为1

  11. 柔性数组如果是结构体成员,那么sizeof(结构体)不包括这个不定长的柔性数组

  12. union用法与struct非常相似,但是union中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。如果一些数据不可能在同一时间同时被用到,则可以使用union

  13. 使用#define宏定义的时候,注意空格的使用

  14. int a[5];则数组名a表示数组的内存地址,不代表是数组首元素a[0]的地址,即&a[0]。比如:(&a+1)指向下一个数组,而(a+1)是数组下一元素的首地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值