《代码阅读方法》---笔记(第三、四章)

第三章第四章为C语言部分,贴出原文,不予总结。

第三章:高级C数据类型

1.了解特定语言构造所有服务的功能之后,应能够更好地理解使用它们的代码。
2.识别并归类使用指针的理由。
3.在C程序中,指针一般用来构造链式数据结构、动态分配的数据结构、实现引用调用、访问和迭代数据元素、传递数组参数、引用函数、作为其他值的别名 、代表字符串、以及直接访问系统内存。
4.以引用传递的参数可以用来返回函数的结果,或者避免参数复制带来的开销。
5.指向数组元素地址的指针,可以访问位于特定索引位置的元素。
6.指向数组元素的指针和相应的数组索引,作用在二者上的元素具有相同的语义。
7.使用全局或static局部变量的函数大多数情况都不可重入(reentrant)。
8.字符指针不同于字符数组。
9.识别和归类应用结构或共用体的每种理由。
10.C语言中的结构将多个数据元素集合在一起,使得它们可以作为一个整体来使用。用来从函数中返回多个数据元素,构造链式数据结构、映射数据在硬件 设备、网络链接和存储介质上的组织方式、实现抽象数据类型,以及以面向对象的方式编程。
11.共用体在C语言中主要用于优化存储空间的利用,实现多态、以及访问数据不同的内部表达方式。
12.一个指针,在初始化为指向N个元素的存储空间之后,就可以作为N个元素的数组来使用。
13.动态分配的内存块可以显式地释放,或在程序结束时释放,或由垃圾回收器来完成回收;在栈上分配的内存块当分配它的函数退出后释放。
14.C程序使用typedef声明促进抽象,并增强代码的易读性,从而防范可移植性问题。并模拟C++和Java的类声明行为。
15.可以将typedef声明理解成变量定义:变量的名称就是类型的名称;变量的类型就是与该名称对应的类型。

第四章:C数据结构

1.根据底层的抽象数据类型理解的数据结构操作。
2.C语言中,一般使用内建的数组类型实现向量,不再对底层实现进行抽象。
3.N个元素的数组可以被序列for(i=0; i 4.表达式sizeof(x)总会得到用memset或memcpy处理数组x(不是指针)所需的正确字节数。
5.区间一般用区间内的第一个元素和区间后的第一个元素来表示。
6.不对称区间的高位边界等于低位边界代表区间的第一个元素:高位边界代表区间外的第一个元素。
7.结构的数组常常表示由记录和字段组成的表。
8.指向结构的指针常常表示访问底层记录和字段的游标。
9.动态分配的矩阵一般存储为指向数组列的指针或指向元素指针的指针:这两种类型者可以执照二维数据进行访问。
10.以平面数组形式存储的动态分配矩阵,用自定义访问函数定们它们的元素。
11.抽象数据类型为底层实现元素的使用(或误用)提供了一种信心的量度。
12.数组用从0开始的顺序整数为键,组织查找表。
13.数组经常用来对控制结构进行高效编码,简化程序的逻辑。
14.通过在数组中每个位置存储一个数据元素和一个函数指针(指向处理数据元素的函数),可以将代码与数据关联起来。
15.数组可以通过存储供程序内的抽象机(abstract machine)或虚拟机(virtual machine)使用的数据或代码,控制程序的动作。
16.可以将表达式sizeof(x)/sizeof(x[0])理解为数组x中元素的个数。
17.如果结构中含有指向结构自身,名为next的元素,一般说来,该结构定义的是单向链表的结点。
18.指向链表结点的持久性(如全局、静态或在堆上分配)指针常常表示链表的头部。
19.包含指向自身的next和prev指针的结构可以是双向链表的结点。
20.理解复杂数据结构的指针操作可能将数据元素画为方框、指针画为箭头。
21.递归数据结构经常用递归算法来处理。
22.重要的数据结构操作算法一般用参数参数或模板参数来参数化。
23.图的结点常常顺序地存储在数组中,链接到链表中,或通过图的边链接起来。
24.图中的边一般不是隐式地通过指针,就是显式地作为独立的结构来表示。
25.图的边经常存储为动态分配的数组或链表,在这两种情况下,边都锚定在图在的结点上。
26.在无向图中,表达数据时应该将所有的结点看作是等同的。类似地,进行处理任务的代码也不应该基于它们的方向来区分连。
27.在非连通图中,执行代码应该能够接通孤立的子图。
28.处理包含回路的图时,代码应该避免在处理图的回路时进入循环。
29.复杂的图结构中,可能隐藏着其他类型的独立结构。

参考:
https://blog.csdn.net/weixin_42561498/article/details/87378105

你可能感兴趣的:(代码阅读(Coders,at,Work,))