《狂人C》阅读笔记(1)


Page8,main的原型应该是不需要void作参数的。我试验了codeblock(使用gcc为编译器),没有警告。

另外就是代码应该标记出行号,使用行号指明更清晰一些。

还有一个格式方面的问题是”;“在书中单独出现时都是全角中文”;“这个非常糟糕,很容易误解。

还有一个问题是C99还是C89,我的建议是以C89为主介绍,间杂一些C99,但是C89不应该以”过时“来形容,我倒是觉得C89更主流一些。

page9,关于#include””和#include<>的区别,应该指出后面会讨论的章节更好。

page14,关于中文做标识符、变量名、函数名的解释,反而让人比较迷糊。其实我觉得作为一本针对初学者的书籍,最好不要在开始碰这个方面,可以在后面加入一些说明补充。

page16,如表1-1所示,应该说”有些keyword”是C99新增关键字。另外我觉得这个C99其实意义不大,说了反而让人迷惑。在后面附录补充说明一下就可以了。

page19,风格习惯一节,如果说的更详细一点就好了,太简单。另外《狂人C》的代码风格是({}三种风格中)最不常见的一种,应该稍微提一下三种不同风格。

page20,开始一个段落介绍如何让printf分成print\换行加f这种,完全没必要,让人更混乱,而且代码示例如果从缩进来看还是错的。

page20,我觉得应该是”任何一个C程序必须有而且只能有一个入口函数,这个函数绝大多数情况下定义为main。“VC++和GCC都可以通过编译选项修改入口函数(entry function),如果用VC++,通常名字为_tmain()。还有就是main函数有两个可不可以?如果抬杠的讲,通过预定义编译选项,可以定义两个main,嘿嘿。

page20,printf()函数是由C标准库提供(C standard library),而C标准库大多数由操作系统编写者提供,通常情况下GCC只负责把printf()与标准库代码实现编译链接到一起。关于标准库,也可以选择比如DietC这种第三方。windows sdk也提供了标准库的实现,我不是很清楚,但是理论上说GCC应该是可以使用windows SDK提供的include和library的。

page25,应该介绍一下D(ecimal),H(ex)这些单词的完整形式,更好一些。

page29,对于学习、考试、面试而言,我觉得”同名”是一个很值得考的知识点,当然实际工作中就不要这么写了。

page31,由于字体的原因,/* */和//看上去非常奇怪,尤其是//就好像中间有个空格一样。

page31,关于注释,我不太同意书中说法。个人觉得注释只应该在该使用的时候使用,如何注释何时注释,代码大全和程序设计实践这两本书介绍的非常全。

page32,关于变量的定义,K&R英文版(以下提到K&R都指的是英文版页码)的page195说的非常清楚,《狂人C》的提法只说了其中一方面,也就是storage object这一面。不完整。

page32,变量使用之前必须声明(declaration),这一点《狂人C》的说法是错误的,对于C语言来讲,声明 (declaration)与定义(definition)是很有区别的两回事,不可以互换使用。K&R page40说的非常清楚。而定义(definition)在K&R的page250有说明。


《“《狂人C》阅读笔记(1)”》 有 1 条评论

  1. 那个main如果不用参数的话是应该在括号里写void,这一点没有错,如果括号中什么都不写的话会被认为是有不定参数的

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注