最新发布

C 语言程序设计:抽象数据类型的设计问题

C 语言程序设计:栈抽象数据类型 中描述了栈抽象数据类型,并介绍了几种实现方法。遗憾的是,这里的抽象数据类型存在一些问题,使其达不到工业级强度。下面一起来看看这些问题,并探讨一下可能的解决方案。
阅读全文

C 语言程序设计:栈抽象数据类型

为了说明抽象数据类型怎样利用不完整类型进行封装,需要开发一个基于 C 语言程序设计:信息隐藏 中描述的栈模块的栈抽象数据类型(Abstract Data Type, ADT)。这一过程中将用三种不同的方法来实现栈。
阅读全文

C 语言程序设计:抽象数据类型

作为抽象对象的模块有一个严重的缺点:无法拥有该对象的多个实例(本例中指多个栈)。为了达到这个目的,需要创建一个新的类型。
阅读全文

C 语言程序设计:信息隐藏

设计良好的模块经常会对它的客户隐藏一些信息。例如,我们的栈模块的客户就不需要知道栈是用数组、链表还是其他形式存储的。这种故意对客户隐藏信息的方法叫作信息隐藏。
阅读全文

C 语言程序设计:模块

设计 C 程序(或其他任何语言的程序)时,最好将它看作一些独立的模块。模块是一组服务的集合,其中一些服务可以被程序的其他部分(称为客户)使用。每个模块都有一个接口来描述所提供的服务。模块的细节(包括这些服务自身的源代码)都包含在模块的实现中。
阅读全文

C 语言静态断言简介

函数 assert 在程序运行期间做诊断工作,从 C11 开始引入的静态断言 _Static_assert 可以把检查和诊断工作放在程序编译期间进行。
阅读全文

C 语言 C11 函数指定符 _Noreturn 和头 <stdnoreturn.h>

在 C 语言里,有些函数是不返回的,比如 longjmpexitabort。从 C11 开始引入了一个函数指定符,也就是关键字 _Noreturn,意思是“不返回”。如果在一个函数的声明里有这个函数指定符,则意味着它不返回到调用者。
阅读全文

C 语言内联函数简介

C99 及之后的函数声明中有一个 C89 中不存在的选项:可以包含关键字 inline。这个关键字是一个全新的声明指定符,不同于存储类型、类型限定符以及类型指定符。为了理解 inline 的作用,需要把 C 编译器在调用函数和从函数返回过程中产生的机器指令可视化。
阅读全文