搜索
查看: 2838|回复: 6
打印 上一主题 下一主题

分享本不错的书

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-11 09:37:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 一辈子的鱼 于 2013-4-11 09:38 编辑

              这本书我正在看,可能对于老鸟来说它没太大用处,但却能给初学C者带来不小的帮助,让你少走弯路,让你知其然也知其所以然。
[C语言深度剖析.-.解开程序员面试笔试的秘密].陈正冲.石虎.文字版.pdf (850.64 KB, 下载次数: 401)




沙发
发表于 2013-4-11 11:18:00 | 只看该作者
很不错的一本书。解决了好多学习者的困惑。
板凳
发表于 2013-4-11 13:12:55 | 只看该作者
本帖最后由 rosynirvana 于 2013-4-11 13:31 编辑

以我的经验而言,看这类书的时间,不如多看几遍K&R
几年前我遇到C的问题,满网络找答案,后来没事翻K&R的时候发现都能找到

此外,这本书编写的水准也实在不敢恭维
但是大名鼎鼎的GNU(GNU's Not Unix的递归缩写)则不这么认定,它指定 void * 的算法
操作与char * 一致。因此下列语句在GNU编译器中皆正确:
pvoid++; //GNU :正确
pvoid += 1; //GNU :正确
在实际的程序设计中,为符合 ANSI标准,并提高程序的可移植性,我们可以这样编写
实现同样功能的代码:
void * pvoid;
(char *)pvoid++; //ANSI :正确;GNU:正确
(char *)pvoid += 1; //ANSI :错误;GNU:正确

首先吧,GNU的C编译器一般叫gcc,不知道作者为什么非要摆出GNU这个名字,这让第一句就是个病句,因为GNU是个组织是个project,不是一个C语言标准或者实现
其次,pvoid指针根本没初始化,指向的地址都不知道是什么,写++或者+=这种操作符是想干什么?
  1. void Function(int x){
  2. //program code
  3. }
复制代码
作者把这个叫做不该提倡的代码风格
长久以来,函数大括号的风格就有两种,一种紧凑一种松散
如果在做工程,那么会有一个风格指导要求用某种风格,如果是个人的project,那么一般的建议都是“维持一种风格”
不知道作者所谓不该提倡,是有着什么独到的见解?

其他关于风格的论述也大多有这种问题

书的内容编排方面,例如1.2.1,我觉得需要读这本书的人,都会知道寄存器是什么……而且后面的例子也不准确,寄存器在物理特性上就比现在的内存快,不是离得近,范围小就能解释的

B), if(bTestFlag == TRUE); if(bTestFlag == FLASE);

首先bool是个C99特性,使用前必须#include <stdbool.h>,因为我只是翻阅也不知道作者说了没;其次stdbool.h里面定义的写法是true和false,不是TRUE和FALSE,更没有FLASE……

大概作者一直用的是MSVC的扩展,所以也没去注意这些标准化的东西……

此外和好多我读过的中文技术书籍一样,书里有些说法非常之武断,例如
register:这个关键字请求编译器尽可能的将变量存在CPU 内部寄存器中而不是通过内
存寻址访问以提高效率。
下文还强调了一下尽可能这三个字,而C99标准上是怎么说的呢
A declaration of an identifier for an object with storage-class specifier register
suggests that access to the object be as fast as possible. The extent to which such
suggestions are effective is implementation-defined.
通常inline和register这两个关键字的解释是这么说的:“建议”编译器将变量放在寄存器中,“建议”编译器将函数内联化,编译器可以采纳,也可以不理睬,怎么做都符合标准,没有错误。例如标准的注释上还有:
The implementation may treat anyregister declaration simply as an auto declaration.
就是说,编译器可以完全不理睬register这个关键字。
而作者将常用的“建议”换成了“尽可能”,下文的描述给人感觉就是,只要寄存器有空,就会把变量放在寄存器上,造成一定程度的误解。

学习C语言几个月,这种问题或许一眼就看出来了,而新人呢?
地板
发表于 2013-4-12 13:17:10 | 只看该作者
谢谢分享    +U
5#
发表于 2013-4-23 15:14:41 | 只看该作者
啊哈C写的不错,起码能让很多新手动起来了绝大多数都不是真正奔着做专业码农去的,要的就是不断的有兴趣,有点成就感。咬文嚼字的工作交给专门的研究机构去吧。不管什么语言,就该给人用的。未来编程可能都不用写什么很多的代码,就像计算机不只用来编程一样,工具而已废话有点多了哈
6#
发表于 2013-6-15 16:06:23 | 只看该作者
的确不错,值得大家看看
7#
发表于 2013-7-26 16:15:21 | 只看该作者
正好开始学C语言……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表