如果你觉得学校的书看不懂(尤其是谭某某的书),换书,《C Primer Plus》不错,还看不懂?《啊哈!C》,给初中生看的。
如果你觉得老师不好,别听他的课,网课、Mooc、B站视频。
边看边写,一定要写。光瞪眼除了让你眼睛变大,一点用都没有。
不会就搜,搜不到就问,问同学问学长问老师问知乎大V。
放弃百度用Google,哪怕是Bing也行,扶墙是程序员必备技能,实在不行花点钱。
上Stackoverflow而不是CSDN,不懂英文有翻译软件,专业名词就那些,看多就记住了。(CSDN很多博客是复制粘贴来的,错误很多不说,连排版都没排好。)
不是非要在课堂上才能学C。
有一个三八理论:哪怕是你三本每天编程八小时也能成大神。
八小时做不到?折个半,四小时。四小时做不到?折个半,两小时。
你说你压根不喜欢写代码,两小时也做不到。
那你选计算机干嘛?
下面是一些吐槽。
来自某211院校老师的提问:
许多老师可能科研能力很强,但他特别喜欢教你茴香豆的茴有几种写法。
怎么判断好不好?9012年还在教VC6.0的,全是辣鸡。
另一个211院校的老师教C++时教人用 itoa() 这个函数。然后就有一批人死活编译不通过。
看看Stackoverflow上关于这个 itoa() 的回答:
This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.
C++都没有这个函数!
我怀疑很多高校(不是什么野鸡学校,而是包括许多985211)都在教VC6.0这门语言,对,这门语言,不然他们怎么能写出那么多只能在VC6.0上编译的代码……
选一个好教材,选一个好老师,只要你用心,你顶多有些地方不理解,不会“压根听不懂”。
单说C语言的语法,其实并不难,想想高中数学的程序框图,大概就是那些。难在背后的与计算机科学相关的内容。
比如,保存一个很大的数到int变量为什么会溢出、为什么控制台输出中文会乱码、指针是来干什么的为什么我们要用它、为什么我写了半天还是黑框框程序?
如果你没有遇到这些问题,那算你幸运。而一旦遇上了,随便一个问题就讲耗费你一整天甚至几天的时间来解决。甚至很多时候,你连你怎么解决的都不清楚,只是照着网上的教程那样做,这次成功了,下次遇到问题还是懵逼。
事实上这些问题大多和C语言无关,比如乱码问题涉及到字符编码问题;不想写黑框框,想写图形界面,就要了解系统的消息机制以及界面绘制,这些大多都是大坑,一个问题够写一本书了。
换句话说,新手想要做出一些有成就感的东西来,是需要学习非常多的计科知识的。
但是,如果没有人跟你讲清楚这些东西,带你绕过这些坑,而你又只身潜入,那你很容易在刚开始就四处碰壁,进而泄气,甚至开始自暴自弃不想学了。
(小声BB:我在刚学会指针的那个晚上试图开始学Windows API,然后看着接近100行的Hello Win瑟瑟发抖( 逃
有大佬上来就让人抱着砖头一样的书啃(比如《算法导论》),大概这是大佬的学习方式吧,不适合我等凡人。我等凡人需要有成就感这样的东西支撑我们继续学下去,这也是许多人执着于图形界面的原因(因为直观)。
所以如果你学了基础语法之后,觉得缺乏动力学下去,你可以试试一些能快速做出成品的语言。比如Python,比如网页前端。如果你弄懂了C的语法,你去学其他语言的语***觉得大同小异。
但是,不要因为他们绚丽就忘乎所以。这些美丽的东西背后都有着坚实而复杂的理论基础。比如网页的渲染的基础是浏览器,解析你HTML文本的是Parser,运行Python脚本的是解释器。
你可以用C来学习他们的原理。
对,C用来学原理。用C去写一些直观的东西可能会让你疯掉,但是用C实现那些底层的东西却很方便,但这已经是后话了,学到这个地步你应该都不会迷茫了。
我们老师开局先让我们新建一个工程,交作业的时候让我们把工程文件删了……喵喵喵?
我问老师说我们不能单文件编译吗?老师说:“我比较喜欢工程。”
虽然不用VC6.0,用的是Dev-C++,但是她的操作极度依赖IDE……没有知识体系,没有灵魂……