答C语言初学者——有些问题可以放一放

简介: 【来信】  老师你好,我才接触C语言,现在对C语言很迷茫,自己上网查了一些资料也无头绪,现在想问老师几个问题。  1.C和C++到底有什么不同;  2.C++的教程能适用于C吗?  3.找不到一些比较好的入门的基础书籍和算术书籍,老师能否介绍一些。  希望老师能解除我的困惑,在这里先谢谢老师了。【我的回复】  可以看出你是一位很认真的同学。认真在战术上一定是重要的,请发扬下去;但在制定战略时

【来信】

  老师你好,我才接触C语言,现在对C语言很迷茫,自己上网查了一些资料也无头绪,现在想问老师几个问题。

  1.C和C++到底有什么不同;
  2.C++的教程能适用于C吗?
  3.找不到一些比较好的入门的基础书籍和算术书籍,老师能否介绍一些。
  希望老师能解除我的困惑,在这里先谢谢老师了。

【我的回复】
  可以看出你是一位很认真的同学。认真在战术上一定是重要的,请发扬下去;但在制定战略时,使用不当,让你的心思跑到了细节上,甚至是末节上,不免会成为障碍。
  我是这样理解你的“迷茫”的。迷茫正常,但现在太多的同学一有些疑惑,就讲“迷茫”,大有这个问题下不去就无法迈开下一步了。早就有一个写作计划,题目叫“迷茫是个病”,一直抽不出时间只能等着。是你所言“迷茫”让我由感而发,这个说法并不针对你,你也没有这么严重。
  回到正题,解答你的困惑。
  “C和C++到底有什么不同?”我很喜欢你用的“到底”,我很喜欢认真的同学。但对于这个问题,想打击你一下,有些认真过头。定下要学习C语言,这个问题对你此时而言并不重要。好比要确定旅游,你已经在去黄山的途中,而心里还有个没有去过的张家界,你会问人,这两个地方到底有什么不同。此类的问题,不同的人会有不同的回答,当然最重要的是你的回答,这要等到你亲自去过这两个地方之后才能做出。这种问题不好答,答不好。有些问题,你可以采取放一放,等待自己的回答。
  不过,我简单地直接回答一下。C++是由C而来的,C++包含C(术语叫兼容)。凡是C支持的,C++一般都支持(有少数C++不建议用,但还保留。)C++在C的基础增加了不少新东西,主要的是支持了面向对象程序设计(当然还有别的)。刚学程序设计,暂时知道这些够了。
  “C++的教程能适用于C吗?”有了上个问题简单的回答,这个问题显然了。如果你的目标是学C,而不是C++,用C的教程最好。C++教程一般采取两种思路,一种是“纯C++”,开篇就面向对象,这种书对你一定不适用。还有一种思路,分两个阶段:面向过程和面向对象,其实放在前边的面向过程部分,核心就是C。这种书和讲C的书之间最大的区别恐怕就是输入输出(C用printf和scanf,C++用cout和cin)不同而已。此类的书可以作为你的参考,如果足够好。(从这个意义上讲,我正在建设的C++的资源,秋季学期的内容也适合C语言的学习者)我不知道你的专业和学习C的目标,对计算机相关专业的初学者,我是赞成用后一种思路学C++程序设计的。先学C,再学C++,也行。
  推荐“好的入门的基础书籍”。这个问题网上的回答很多,我就不再多说。面对网上的推荐,你的真正困惑可能是不知该信谁的。这样的判断能力可以有,也应该有,如果没有,由此练。如果你是自学就不说了,如果正在跟着老师上课,最重要的将课本用好。参考书必须要有,在接受别人推荐后,一定要自己试读,符合自己胃口,且不断有自己可以接受的新知识,就是对你最好的书。有些非常经典的书籍,超出了你接受的范围,对你可能并不合适,要留待下一阶段去读。在不同阶段,“好”有不同含义,在读后面的书时,可能会把前面书中所讲的不严密(但是符合你之那个阶段理解)的观点推翻。阶段性提高,学会自己把握。这也是我不给你推荐具体书的原则。
  问题回答完了。最想说的,某些问题要抓住不放,不解决不罢休,对有些问题,你要学会先想一想,再放一放,过段时间再想一想。哪些该抓,哪些该放,这是你要长进的地方。再补充一句是,无论用什么教程,学习C语言要给自己安排出足够的实践来,做到这一点,恐怕也得涉及到用什么样的实践资源的问题了。听别人的,做自己的判断。

  祝从认真的学习中获得更大的进步!


给编程初学者的其他建议:

更多文章,在《 “IT学子成长指导”专栏》。

  

PS: 面对初学者们,多展示些风度,少来点断言;多些相对的适不适,少些绝对的好不好;多些对智慧选择的引导,少些唯此为真霸气的熏染。欢迎评论和讨论,自觉抵制攻击式、口号式言论!



目录
相关文章
|
Java C语言 索引
C语言初学者常犯的17条错误
C语言不是一门简单的编程语言,新手容易犯很多错误,本文试列举17条C语言初学者易犯的错误。
201 0
|
C语言 C++
C语言小项目——通讯录(适合刚学完C语言的初学者)
C语言小项目——通讯录(适合刚学完C语言的初学者)
C语言小项目——通讯录(适合刚学完C语言的初学者)
|
存储 自然语言处理 编译器
用c语言手搓一个500+行的类c语言解释器: 给编程初学者的编译器教程(2)- 简介和设计
通常我们说的 “编译器” 是一种计算机程序,负责把一种编程语言编写的源码转换成另外一种计算机代码,后者往往是以二进制的形式被称为目标代码(object code)。这个转换的过程通常的目的是生成可执行的程序。 而解释器是一种计算机程序,它直接执行由编程语言或脚本语言编写的代码,它并不会把源代码预编译成机器码,而是一行一行地分析源代码并且直接执行,相对编译器而言可能效率较为低下,但实现也相对简单,并且容易在不同的机器上进行移植(比如x86和mips指令集的机器)。
481 0
|
编译器 BI C语言
用c语言手搓一个500+行的类c语言解释器: 给编程初学者的编译器教程(1)- 目标和前言
这一系列教程希望面向初学者,使用c语言手工实现一个简单的解释器来玩,不需要您掌握除了c语言以外的其他前置知识,也不需要您学习过编译原理的相关知识(当然如果能对简单的数据结构有所了解的话会更好,比如树、栈等)。 > 写一个能执行代码的解释器不仅是一件很有(zhuang)趣(bi)的事情,大概也可以作为刚学习完c语言的一个练手的小项目啦 不同于大部分常见的其他只支持四则运算的所谓”手工解释器“教程,我们希望在代码结构尽量清晰的600行代码中,手工(不借助lex/yacc等工具)完成一个脚本语言“try”,实现以下功能:
1752 0
|
C语言 人工智能
C语言大牛推荐初学者不要犯的17种BUG
喜欢这篇文章的朋友可以多多收藏、点赞、关注 一条龙~
1593 0
|
C语言 C++
C语言初学者必须掌握的关键字!
C语言初学者必须掌握的关键字!
1634 0
|
C语言
c语言中的一些问题;(原谅我是个垃圾)
scanf函数 最近用到了c,很久之前学的,忘记了好多,只能是不会的就打开书看看继续写,感叹c就是有点烦 这个函数是有点烦的在输入的时候要规定数据的格式  c中输入数据的时候按照地址来存取的。
892 0
|
程序员 C语言 人工智能
C语言初学者关于数组指针的深度讨论
一、什么是数组指针? 即是数组的指针。首先它是一个指针,指向数组,指针本身占4个字节。 二、数组指针的使用 int a[3][5];int (*p)[5];p=&a;第二行定义了一个数组指针,p是指针名,指向一个含有5个int类型数据的数组。
1019 0
下一篇
无影云桌面