《标准C语言指南》是站长原著图书,于2016年出版。以下是本书封面以及其它相关内容的介绍。

---图书封面---

stdctour


---图书在版编目(CIP)数据---

(暂未提供)


---图书基本信息--- 作 者:李忠
出版时间:2016年
字 数:千字
版 次:2016年3月第1版
页 数:396
开 本:1/16
装 帧:平装
ISBN:9787121274305
纸质书定价:¥58.0


---第1版前言---

        市面上和C语言有关的图书可以用两个成语来形容:多如牛毛、汗牛充栋。那么,在这种情况下,我为什么还要给牛增加负担呢?

        首先,这本书的目标并不是教C语言的初学者如何入门,因为市面上并不缺乏这样的书籍,而且占了牛毛中的多数。初学者可以选择的书这么多,如果我再来一本,牛一定会很不高兴的。

        其次,这本书也不是C语言程序设计的所谓进阶和提高教程,市面上这类书籍也有不少,但我觉得它们的关注点只集中在一些奇技淫巧方面,不够系统。

        最后,我发现,不管是刚刚入门的C语言初学者,还是有一定编程经验的爱好者,都需要一份权威的C语言手册以备不时之需,有问题随时可查。以权威论,哪本书也比不了C语言的标准文档,但它可能过于严肃,且言简意赅。

        本书的定位是一本C语言手册,或者说是一本C语言的辞典,这样就省了不少和语言无关的废话,仅集中描述语言本身。我的记性不太好,但还好为人师,喜欢在论坛里和别人讨论问题。为了说服别人,难免要引经据典,这个经典就是C标准。问题在于标准是英文,而且相对晦涩,效果不如想像,如果我写了这本书,引用起来更加自如,网友们自然也很容易接受,而我自己也将十分快活。如果我自己在写程序的时候忘了有些东西该怎么用,查起来同样很方便。因此,这本书其实也是给我自己看、给我自己用的。

        下面来说一说如何阅读本书。

        要读这本书之前,我亲爱的读者们或多或少地读过其它一些有关C语言的书。但不得不说的是,很多书为了通俗易懂,在术语的使用上非常随意。因此,初次拿起这本书的时候,你可能会有些不太适应。这是很自然的,毕竟,本书选择了向标准文档靠拢,追求的是目标是用严谨的文字来描述这门计算机语言。

        第一个要注意的问题是“对象”这个概念。在其它有关编程的书籍中,通常使用“变量”一词,但这个概念缺乏正式的定义,而且在标准的正文里也没有出现过(仅在几个注脚里使用了几次)。本书向标准文档看齐,只使用“对象”一词。在阅读本书的其它内容之前,读者也应当先掌握这个术语。

        第二个要注意的问题是,本书的内容互相交叉,每个词条(术语)都引用了更多的其它术语,这是不可避免的。因为标准文档和本书的术语可能与你看过的其它书籍略有不同,也可能使用了其它书籍中没有用过的术语,所以,在你拿到本书后,科学的做法是先浏览一下目录,看看都有哪些词条(术语),做到心中有数。当你看到本书某个部分的内容时,遇到自己不太了解的概念时,可以想起它或许在书中的其它地方有详细解释。这不是一本系统化的C语言教程,因此也不建议从头至尾按顺序阅读本书,这样做只能使你受挫。其实,最科学的方法是拿到本书后,先看你感兴趣的部分;或者,只有在你看别的教材遇到问题时再从这本书中的相应部分寻找答案。

        第三个要强调的是,要养成用类型系统来解释C语言问题的习惯。

        一幅图胜过千言万语,最后一个要说明的问题是如何读语法图。语法图很像铁路图,我认为它很直观,也很容易理解。如下图所示,每个语法图都有一个起始点和一个终点。读它的时候,应当从左边或者左上角开始,沿着线条(或者称为轨道)到达右边,沿途你可能遇到方框(矩形框)、圆或者椭圆。

        在最左边的方框内注明了语法图的标题或者名字,即,当前的语法图用于说明谁的语法;其它方框指示一个非终结符,例如图中的“16进制4元组”和“16进制数字”。非终结符的意思是它可以继续扩展,直到能够用某个明确的内容来代替;圆形或椭圆指示一个不能够再继续扩展的、所指明确的终结符;任何沿着轨道可以走通的序列都是合法的;相反,任何沿着轨道走不通的序列都是非法和无效的。

        就这个示例而言,通过语法图我们就知道,像“\u0123”和“\Uface0bed”都是合法的统一字符名。

clip_image002

        最后,要选择一个与时俱进的编译器,但不要迷信它。编译器也可能出错,就像C标准和本书也会有需要改进的地方一样。事实上,在阅读本书的时候,经验不足的朋友所能遇到的最大障碍就是因为选用的编译器不合适而无法编译书中的示例代码。但是考虑到本书的容量和主题,这恰恰又是本书无法详细指导的内容。如果确实遇到了这方面的问题,可以写信联系我,我的电子邮件地址是leechung@126.com。当然,最好的方法是通过我的博客与其他读者一同探讨,其链接为http://blog.163.com/leechung@126,博客里也提供了其它一些实时交流方式。

        祝各位读者阅读愉快,学习愉快!

        李忠,2015年11月于长春


---第1版目录---

第1章  预备知识    1
1.1  源文件
1.2  程序转换(过程)
1.3  环境
1.3.1  转换环境
1.3.2  执行环境
1.4  C实现
1.5  诊断消息
1.6  转换单元
1.7  输入和输出
1.8  库和头文件
1.9  C标准库

第2章  基本概念
2.1  字符集和字符编码
2.1.1  源字符集
2.1.2  执行字符集
2.2  字符
2.2.1  多字节字符
2.2.2  宽字符
2.2.3  空字符
2.2.4  空白(字符)
2.2.5  空宽字符
2.3  统一字符名
2.4  脱转序列(转义序列)
2.5  三联序列
2.6  (字符)串
2.6.1  多字节(字符)串
2.6.2  宽(字符)串
2.7  对象
2.7.1  值
2.7.2  访问
2.7.3  存储期
2.7.3.1  静态存储期
2.7.3.2  线程存储期
2.7.3.3  自动存储期
2.7.3.4  指派存储期
2.7.4  生存期
2.7.5  对齐
2.7.5.1  基础对齐
2.7.5.2  扩展对齐
2.8  字节
2.9  行为
2.9.1  未定义行为
2.9.2  未指定行为
2.9.3  实现定义行为
2.9.4  区域指定行为

第3章  类型
3.1  类型图
3.2  基本类型
3.2.1  无符号整数类型
3.2.1.1.1  _Bool
3.2.1.1.2  unsigned char
3.2.1.1.3  unsigned short int
3.2.1.1.4  unsigned int
3.2.1.1.5  unsigned long int
3.2.1.1.6  unsigned long long int
3.2.1.2  扩展无符号整数类型
3.2.2  有符号整数类型
3.2.2.1  标准有符号整数类型
3.2.2.1.1  signed char
3.2.2.1.2  short int
3.2.2.1.3  int
3.2.2.1.4  long int
3.2.2.1.5  long long int
3.2.2.2  扩展有符号整数类型
3.2.3  浮点类型
3.2.3.1  复数类型
3.2.3.2  实浮点类型
3.2.3.2.1  float
3.2.3.2.2  double
3.2.3.2.3  long double
3.2.4  char
3.3  标准整数类型
3.4  扩展整数类型
3.5  算术类型
3.5.1  整数类型
3.5.1.1  枚举类型
3.6  实数类型
3.7  字符类型
3.8  派生类型
3.8.1  数组(类型)
3.8.1.1  变长数组
3.8.1.2  可变修改类型
3.8.2  结构
3.8.2.1  位字段
3.8.2.2  弹性数组成员
3.8.2.3  匿名结构
3.8.3  联合
3.8.3.1  匿名联合
3.8.3.2  标记
3.8.4  指针类型
3.8.5.1  空指针常量
3.8.5.2  空指针
3.8.5  函数
3.8.6  原子类型
3.9  标量
3.10  聚合类型
3.11  对象类型
3.12  void
3.13  限定的类型
3.13.1  const限定的类型
3.13.2  volatile限定的类型
3.13.3  restrict限定的类型
3.14  完整类型
3.15  不完整类型
3.16  类型域
3.17  类型的表示
3.17.1  纯二进制计数法
3.17.2  对象表示
3.17.2.1  负零
3.17.2.2  精度
3.17.2.3  宽度
3.17.3  自陷表示
3.17.3.1  未指定的值
3.17.3.2  不确定的值
3.17.4  符号比特
3.17.5  值比特
3.17.6  填充比特
3.18  兼容类型
3.19  复合类型
3.20  类型转换
3.20.1  标量-_Bool转换
3.20.2  整数-整数转换
3.20.3  实浮点-整数转换
3.20.4  实浮点-实浮点转换
3.20.5  复数-复数转换
3.20.6  实数-复数转换
3.20.7  左值转换
3.20.8  数组-指针转换
3.20.9  函数指示符-指针转换
3.20.10  指针-void指针转换
3.20.11  整数-指针转换
3.20.12  指针-指针转换
3.20.13  整型提升
3.20.13.1  (整型)转换阶
3.20.14  常规算术转换
3.20.15  默认参数提升
3.21  有效类型

第4章  词法元素
4.1  预处理记号
4.2  记号
4.3  标识符
4.3.1  预定义标识符
4.3.2  名字空间
4.3.3  作用域
4.3.3.1  文件作用域
4.3.3.2  块作用域
4.3.3.3  函数作用域
4.3.3.4  函数原型作用域
4.3.4  链接
4.3.4.1  外部链接
4.3.4.2  内部链接
4.3.4.3  无链接
4.4  常量
4.4.1  整型常量
4.4.2  浮点常量
4.4.3  枚举常量
4.4.4  字符常量
4.5  字面串
4.6  注释
4.7  关键字

第5章  声明和定义
5.1  声明
5.1.1  (函数)原型
5.1.2  外部声明
5.2  定义
5.2.1  内联定义
5.2.2  外部定义
5.2.2.1  外部对象定义
5.2.2.2  试探性定义
5.2.2.3  函数定义
5.2.2.2.1  main函数
5.3  静态断言
5.4  声明指定符
5.4.1  类型指定符
5.4.2  结构或联合指定符
5.4.3  枚举指定符
5.4.4  原子类型指定符
5.4.5  typedef名
5.5  存储类指定符
5.5.1  typedef
5.5.1.1  类型定义
5.5.2  extern
5.5.3  static
5.5.4  _Thread_local
5.5.5  register
5.5.6  auto
5.6  类型限定符
5.6.1  const
5.6.2  volatile
5.6.3  restrict
5.6.4  _Atomic
5.7  函数指定符
5.7.1  inline
5.7.2  _Noreturn
5.8  对齐指定符
5.9  声明符
5.9.1  指针声明符
5.9.2  数组声明符
5.9.3  函数声明符
5.9.4  全声明符
5.10  初始化
5.10.1  初始化器
5.11  类型名

第6章  表达式
6.1  表达式列表
6.2  全表达式
6.3  函数指示符
6.4  左值
6.4.1  可修改的左值
6.5  值计算
6.6  void表达式
6.7  副作用
6.8  序列点
6.8.1  前序
6.8.2  后序
6.8.3  无序
6.8.4  不确定顺序
6.9  优先级
6.10  结合性
6.10.1  左结合
6.10.2  右结合
6.11  求值
6.12  基本表达式
6.12.1  泛型选择
6.13  后缀表达式
6.13.1  复合字面值
6.13.2  数组下标
6.13.3  函数调用
6.13.3.1  形参
6.13.3.2  实参
6.13.4  成员选择
6.13.5  后缀递增
6.13.6  后缀递减
6.14  一元表达式
6.14.1  前缀递增
6.14.2  前缀递减
6.14.3  地址
6.14.4  间接
6.14.5  正号
6.14.6  负号
6.14.7  按位反
6.14.8  逻辑非
6.14.9  尺寸
6.14.10  对齐
6.15  转型表达式
6.16  乘性表达式
6.16.1  乘法
6.16.2  除法
6.16.3  取余
6.17  加性表达式
6.17.1  加法
6.17.2  减法
6.18  移位表达式
6.18.1  左移
6.18.2  右移
6.19  关系表达式
6.20  等性表达式
6.21  按位与表达式
6.22  按位异或表达式
6.23  按位或表达式
6.24  逻辑与表达式
6.25  逻辑或表达式
6.26  条件表达式
6.27  赋值表达式
6.27.1  简单赋值
6.27.2  复合赋值
6.28  逗号表达式
6.29  常量表达式
6.29.1  整型常量表达式
6.29.2  算术常量表达式
6.29.3  地址常量

第7章  语句和块
7.1  语句
7.2  标号语句
7.3  复合语句
7.4  表达式语句
7.5  选择语句
7.5.1  if语句
7.5.2  switch语句
7.6  迭代语句
7.6.1  for语句
7.6.2  while语句
7.6.3  do语句
7.7  跳转语句
7.7.1  goto语句
7.7.2  continue语句
7.7.3  break语句
7.7.4  return语句
7.8  块

第8章  预处理指令
8.1  源文件包含
8.2  宏替换
8.2.1  对象式宏定义
8.2.2  函数式宏定义
8.2.2.1  记号串化(#)
8.2.2.2  记号黏接(##)
8.2.3  预定义宏
8.3  条件包含
8.4  行控制
8.5  抛错
8.6  杂注
8.7  空指令

details ends.

标签: none

添加新评论