KaranocaVe's Blog Help

hints

  • 表达式

  • 语句

  • 序列点

  • 左值

  • 字面量

  • 复合字面量

  • 作用域

  • 基类型

  • 偏移

  • 伸缩型数组成员

  • struct hack柔性数组成员

  • 嵌套的匿名成员结构

  • 嵌套联合

  • 记录

  • 字段

  • 链式结构

  • 标记名

  • 类型名

  • 名称空间

  • char (* flump[3])(int);

  • 加了typedef,变量名就变成类型名

  • 从一个9 位组合100000000 (256 的二进制形式)减去一个负数的位组合,结果是该负值的量

  • 使用| 运算符,任何位与 0 组合,结果都为本身

  • 使用&,任何位与 1 组合都得本身

  • 异或只知道同与不同

  • 预处理器只会替换

  • 记号型字符串 字符型字符串

  • 宏名称和替换体

  • 宏形参

  • 字符串化

  • 记号

  • #组合 ##粘合

  • 变参宏

  • __VA_ARGS__

  • "声明"(Declaration)和"指令"(Statement)

  • 条件编译

  • 预定义标识符

  • 预定义宏

  • 泛型编程

  • 泛型选择表达式

  • 内联函数

  • 宏展开

  • y = (sqrt) (x);

  • assert() _Static_assert()

  • 变参宏

  • 可变参函数

  • parmN

  • 找出正确的数据表示不仅仅是选择一种数据类型,还耍考虑必须进行哪些操作

  • 在C语言中,可以把所需要的操作设计成C函数来表示

  • 算法( algorithm ) ,即操控数据的方法

  • 设计数据类型的过程, 这是一个将算法和数据表示相匹配的过程

  • 抽象数据类型以面向问题而不是面向语言的方式,把解决问题的方法和数据表示结合起来

  • 在开始编写代码之前,需要做很多程序设计方面的决定

  • 头指针

  • 类型特指两类信息:属性和操作

  • 可以认为数学家提供了整数的抽象概念,而C则实现了这一抽象概念

  • 例如在C中,可以提供结构定义和操控该结构的函数原型,这些作用于用户定义类型的函数相当于作用于C基本类型的内置运算符

  • 链表是一个能储存一系列项且可以对其进行所需操作的数据对象。

  • 抽象数据类型(Abstract Data Type) ADT

  • 接口设计应尽量与ADT的描述保持一致

  • 节点(node)

  • 数据隐藏,是一种从编程的更高层次隐藏数据表示细节的艺术

  • 后置条件 postcondition

  • C语言把所有类型和函数的信息集合成一个软件包的方法是:把类型定义和函数原型(包括前提条件和后置条件注释)放在一个头文件中。该文件应该提供程序员使用该类型所需的所有信息。

  • 在头文件中,把组成函数名的每个单词的首字母大写,以这种方式表明这些函数是接口包的一部分。

  • list.h (定义数据结构和提供用户接口的原型)、list.c (提供函数代码实现接口)、films3.c (把链表接口应用于特定编程问题的源代码文件)

  • ADT版本可读性更高,而且针对的是最终的用户所关心的问题。

  • 对大型编程项目而言,这种把实现和最终接口隔离的做法相当有用。这称为数据隐藏,因为对终端用户隐藏了数据表示的细节。

  • 队列是一种"先进先出"(first in, first out, 缩写为FIFO)的数据形式

  • 对链表而言,其大小受限于可用的内存量,因此链表不要太大。(really?)

  • enqueue(enfiler)

  • 链接

  • Front/Rear

  • 在重要程序中使用一个新的设计(如,队列包)之前,应该先测试该设计。

  • 驱动程序(driver),其唯一的用途是进行测试

  • 用队列进行模拟

  • 在数组中插入元素,必须移动其他元素腾出空位插入新元素

  • 通过在创建节点时就设置好下一个指针(NULL),可以简化插入操作的逻辑

  • 随机访问( random access ) | 顺序访问( sequential access )

  • 顺序查找( sequential search )

  • 使用并发编程,同时查找列表中的不同部分

  • 二分查找( binary search ), n 次比较能处理有 2n-1 个元素的数组,所以项数越多,越能体现二分查找的优势。

  • 目标项

  • 二叉查找树是-种结合了二分查找策略的链接结构。

  • 根(root)

  • 子树(subtree)

  • 叶节点(leaf)

  • 这种分支特性很适合使用分而制之的递归来处理

  • 二叉查找树只有在满员(或平衡)时效率最高

  • AVL树

  • 因为要重构,所以创建一个平衡的树所花费的时间更多,但是这样的树可以确保最大化搜索效率。

  • C已经涵盖了从简单的char类型变量到大型且复杂的结构在内的数据对象。面向对象语言更进一步发展了对象的观点。

  • 对象的性质不仅包括它所储存的信息类型,而且还包括了对其进行的操作类型。

  • 栈是一种LIFO ( 即后进先出last in,first out ) 结构。

19 August 2024