百分剧情

​谭浩强C语言真的误人子弟了吗?

点击: 来源:百分剧情
摘要:谭浩强C语言真的误人子弟了吗? 写在前面 本文评价纯属个人观点,没有任何相关利益。 谈起C语言,不得不提谭浩强,他很早就涉足国内的编程教学,人称“中国的C语言之父”。 大学

谭浩强C语言真的误人子弟了吗?

写在前面

本文评价纯属个人观点,没有任何相关利益。

谈起C语言,不得不提谭浩强,他很早就涉足国内的编程教学,人称“中国的C语言之父”。

大学毕业时,把大部分教科书(包括我那本学校自编的C语言教程)都给卖掉了。现在想看看C语言,又没有实体教材,回老家时突然发现在校时,学长送给我的C语言教材(谭浩强C语言,第三版),还在书桌上吃灰(真的吃灰,书皮上全是灰)。

谭浩强C语言的特点

谭书的内容比较完善

从整体结构上看,谭书条例还是比较清晰的。从概述、数据类型,到逻辑结构控制,再到数组、函数和指针,以及其他内容,C语言该有的知识点基本都涵盖了。对于初学者来说,这样一本教材,用来作为入门书已经够用了。

谭书使用的内容有点老旧

看了下书中的C开发环境,还在推荐使用的TC和C89。再看看,书籍的出版年份,是2010年出版的。什么?2010年也不至于用这种环境,好歹也该用个VC++6.0(启动速度快,操作简单,功能强大,适合初学者使用)。看到这里,不得不说,谭老在学术方面还是挺执着的。

不过话说回来,我们是来学C语言的,不是来整编辑环境的。所以大家在学习C语言时,还是把重点放在C语言的逻辑学习上,不要过于纠结编辑环境的优劣。如果觉得TC不好用,这里推荐初学者使用Dev-C++(下载地址:

https://bloodshed-dev-c.en.softonic.com/),安装之后就能使用,无需配置编译器。在谭书中发现的一个案例

while((*p2++=*p1++)!='\0');//已修正

我仔细看了看,这样的例子在谭书中不止一次出现。这句代码的功能是拷贝字符数组,我们先不谈这种写法的执行效率有多高,单从代码的阅读体验上来看,真的是让人很抓狂

下面来分析一下这句代码的意思:

微软开发者网上有一个类似的案例分析,是用C#语言解释的,但是不影响我们的理解。具体内容如下:

上图是说赋值表达式返回的结果是“左值”,返回类型也与左操作数相同。

可以看到,上图最后写到:你不要在实际生产环境中这样写代码

那么这句代码到底如何理解了,你可以这么想,p2所指向的内容,是由p1所指向的内容赋给的。也就是说,*p1和*p2单从值内容上看,是相等的。因此上面的代码可以这样理解:

while(*p1!='\0') { *p2=*p1; p1++; p2++; }

总结

初学C语言,还是要学会掌握C语言的精炼表达,不要把大量的时间花在一些看似巧妙,却没有什么实际用途的技巧上。谭老的书其实没有太大问题,只是“一千个人会有一千个哈姆雷特”,不要太在意谭书的小问题,重在理解C语言的精髓

另外如果大家还想阅读其他C语言材料,可以选择《C Primer Plus》这本书,这本书从名字看就知道是一本C语言入门经典。这是一本大部头的书(第六版有一千多页),慢慢啃吧(英语基础好的,直接啃原版,效果更佳)。最后祝大家C语言学习愉快。

相关文章

    ​中国军衔等级如何划分

    ​中国军衔等级如何划分

    ​DeepSeek眼中的华语乐坛十大金曲

    ​DeepSeek眼中的华语乐坛十大金曲

    ​鸟随鸾凤飞腾远,人伴贤良品自高

    ​唯美似仙的〈东方女神〉艺术油画欣赏

    ​标题:中国礼仪大全,弘扬礼仪之邦的传统文化

    ​标题:中国礼仪大全,弘扬礼仪之邦的传统文化

    ​吴青霞山水画赏析

    ​吴青霞山水画赏析

    ​巴萨0-0客平里昂,特雷尔重炮中框,苏神失良机

    ​美国国土“飞地”——阿拉斯加州

    ​美国国土“飞地”——阿拉斯加州

    ​袋狮:史前澳洲杀手

    ​袋狮:史前澳洲杀手

    ​一分钟唱日语歌练假名识读:被生命所厌恶

    ​一分钟唱日语歌练假名识读:被生命所厌恶

    ​西晋到底是怎么灭亡的?

    ​西晋到底是怎么灭亡的?

    ​绝世唐门:霍雨浩和王秋儿的爱情模式

    ​绝世唐门:霍雨浩和王秋儿的爱情模式

    ​名人故事(哥白尼坚持真理)

    ​名人故事(哥白尼坚持真理)

    ​穷且益坚,不坠青云之志

    ​穷且益坚,不坠青云之志