说在前面

为什么会写下这篇文章?本人也并不是什么大神,但是也自学了很久,从一个小白开始自学,期间走过很多弯路,掉过许多坑。一路跌跌撞撞下来,算是有了点收获,有了点感想,将它们记录下来,希望能帮助新入坑的小伙伴们少走些弯路。虽然说不上句句珠玑,但每句都是有感而发,真心实意。

思想准备

持续性的学习才能带来实质性的提高。长话短说,不要三分钟热度。

误区

常看见有人提问,我英语不好是不是不适合学呀?我数学不好是不是不适合学呀?老是有人在担心英语和数学这两样东西会成为你学习路上的最大障碍,可是你此时的犹豫不决才是你的最大障碍。

首先你要明白好的数学和英语能带给我们什么?

好的英语,能让你获取技术资讯更加快速,准确。最新的资料、资讯往往是国外的。

好的数学,能让你更快速的解决问题。

站在领域顶端的大神们,毫无疑问,拥有好的英语水平和数学水平。但是,我们只是想自学一下而已,只是入个门罢了,它们并不会让你无法学会C。而且,你是一个活人呀,你有手有脚有脑子,你觉得哪方面不强,学习补上不就行了?你不停发帖询问糟糕的英语和数学会不会影响你自学的时间,早足够你背会儿单词,解几道题了。

正式学之前该做的准备

编译环境的准备

常看见发帖求介绍软件以及软件安装出现问题的。然后一堆人推荐了一堆软件,然后让新手陷入选择困难。我想说,你是学习C语言的,不是学习编译器的,你应该专注于语言特性与编程思路,而不是工具的使用,主次应该分清。因此,新手需要的软件是易上手。在这不推荐VC6.0,因为它是在是太老了,现在的系统win7,win10什么的,安装它基本上都会有兼容性问题,现在连计算机二级都不用VC6.0了。也不推荐使用宇宙第一IDE-VS系列,因为它庞大、复杂。不可否认它的强大,但是还是之前那句话,初期应该注重语言本身,并且微软为自家的编译器制定了不少规则,新人常会踩坑,比如scanf_s()。所以本着简单易上手的原则,推荐使用DEV-C++。

自学资料的选择

资料大致分两类,视频与书籍。无论怎样,书籍是必不可少的,因为先不说你看的视频质量层次不齐,其次,视频是被动的摄入知识,而看书是主动学习,效率也不一样。当然,不同人对不同学习方式的效率也不一样,但是一本用来参考的书必然是不可缺少的。

再来看书的选择,先搞清你学C是用来做什么的。倘若只是考个二级,那么谭浩强的书可以一看,但是请网上找一份勘误,里面有不少错误。如果你的目标不止计算机二级,那么《C Primer Plus》值得你一读。

额外推荐

《C和指针》,它详细但又不失简练的介绍了C语言以及C标准困的方方面面,且花了大量的篇幅和图示来将指针的概念讲的很清楚。

《C程序设计语言》作者是Kernighan那本,即传说中的K&R。

应该掌握的技能

学会阅读

看到这个标题,大家可能会忍不住吐槽了,从小念到大的书,还不会阅读?

嗯,可能你还真的不会。经常会出现这种情况,书上某个例子出现个新东西,哇,没学过,好难,看不懂,再看一会,还是不懂,不想看了。或者试图在初期搞清楚每一个小细节。你看到了某些内容,就想了解它的全部,一头扎进涉及的每个主题,越陷越深。但是,一次性地学习所有程序设计原理、技术和语言功能是不可能的,你应该注重于当前主题下想给你呈现的知识,以及好的、有效的程序设计技巧,而不是一些长时间内都用不上的技术细节,因为,往往在下一章就会有你所需的答案,且一旦你学会编程,你完全可以自己到手册中查找技术细节。

学会提问

提问也是一项应该掌握的技能。总是有这样的提问者,一张图片,或者一大串格式奇葩的代码,再问上一句错哪了???

首先应该明确一点,没有人有义务回答问题,所以你提问的方式让人不爽了,可能就不会有人想回答了,或者谁也不知道你问的是什么,自然不会有人回答。

提问之前,你首先都得明确你的要求是什么,即你预期的效果是什么?再是,你为达到这个目的,做了什么努力?出现了什么问题?最后是截图截得清楚点,代码格式也弄弄好。

这样,那些懂的自然能有针对性的回答你。节约大家的时间。

搜索引擎的使用

可以这么说,网络是你最好的老师。如何从繁杂的网络中寻找到你想要的资料?通过搜索引擎。学会搜索编程资料是一个重要的技能。搜索引擎最强大的是谷歌,可惜需要***,退而求其次你可以用用必应搜索和百度搜索。将你的问题提炼成关键字,输入搜索框搜索。当然这是最基础的方式,更多技巧请搜索“如何用好谷歌等搜索引擎”。

正式学习中该注意的几点

多动手

实践出真知。将不懂的程序编译执行一遍比你在那冥思苦想要有效的多,且有些问题你只有在实践中才能体会到。

多思考

知识不是眼睛过上一遍就算了,问题不是看上一遍就会了,你需要去思考,思考这个程序执行的过程,去思考哪一步除了差错,去思考这个问题的解题思路。只有不断思考,才能将书本的知识内化为自己的。

多总结

总结也是一种思考,在这我鼓励大家写写博客,将所学到的知识,碰见的问题,记录下来,你会发现受益匪浅。

多交流

不要闭门造车,现在是互联网世界,你不去外边看看永远不知道自己出于什么水平。和人交流,你会不自觉的吸收他们好的一面。一开始你是处于请教的一方,你能快速从请教对象上获取知识,当技术成长后,你处于被请教的一方,你在回答他人问题的过程中也是对自己掌握知识的梳理与巩固,“好面子”的你会不断学习以保持你的技术领先。

结语

OK,也就写上那么多吧。有心的自然会去学,会去思考,无缘的多说也无益。再说,只是现在的我的感想,经验、学识所限,这些东西还不算完善。就这样吧~

ps:转载请说明出处。

关于自学C语言这件事的更多相关文章

  1. 关于 C 语言,我喜欢和讨厌的十件事

    前言:最近有个家伙抱怨道“为什么我还要再用C?”-虽然我不同意他的说法,但至少他随口提到如果你“在一台拇指大小的电脑”上编程,或者为一门语言写引导程序,那么可以用C语言.要我说,写设备驱动,或者特定平 ...

  2. 做一个 App 前需要考虑的几件事

    做一个 App 前需要考虑的几件事  来源:limboy的博客   随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...

  3. 微信小程序:开发之前要知道的三件事

    前言 微信之父张小龙在年初的那次演讲中曾表示:"我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情".几个月后,微信正式推出微信应用号(即微信小程序),在互联网中掀起了又 ...

  4. 关于 Java Collections API 您不知道的 5 件事,第 1 部分

    定制和扩展 Java Collections Java™ Collections API 远不止是数组的替代品,虽然一开始这样用也不错.Ted Neward 提供了关于用 Collections 做更 ...

  5. 关于 Java 对象序列化您不知道的 5 件事

    数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处. 关于本系列 您觉得自己懂 Java 编程?事实上,大多数 ...

  6. 关于 Java 性能监控您不知道的 5 件事,第 1 部分

    责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java? 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...

  7. 安装完Ubuntu 14.04要做的九件事

    www.linuxidc.com/Linux/2014-04/100411.htm 1.看看有哪些新特性 安装完之后的第一件事肯定是看看Ubuntu 14.04有哪些新的特性. Ubuntu 14.0 ...

  8. 关于 Java Collections API 您不知道的 5 件事--转

    第 1 部分 http://www.ibm.com/developerworks/cn/java/j-5things2.html 对于很多 Java 开发人员来说,Java Collections A ...

  9. react.js 你应知道的9件事

    React.js 初学者应该知道的 9 件事   本文假定你已经有了一下基本的概念.如果你不熟悉 component.props 或者 state 这些名词,你最好先去阅读下官方起步和手册.下面的代码 ...

随机推荐

  1. javascript 定时任务封装

    /** * 定时任务 * 间隔时间,执行次数,要带的参数,要执行的函数. */ var TimingTask = function(time,count,param,fun){ this.id = - ...

  2. 设置Yii2发生错误返回json

    如果指示指定一个函数那么可以使用: \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 如果想整个应用都返回JSO ...

  3. js 替换中间四位手机号为 *

    replace(/(\d{})\d{}(\d{})/, '$1****$2')

  4. The user specified as a definer ('root'@'%') does not exist解决方案

    今天操作以root身份操作MySQL数据库的时候报出了这个异常: Error updating database. Cause: java.sql.SQLException: The user spe ...

  5. Oracle 系统常用命令

    1.基本口令 1.1.show user                               作用:显示当前连接用户 1.2.conn 用户名/密码                       ...

  6. daterangepicker

    官方文档 http://www.daterangepicker.com/#examples 与angular结合 html <div date-range-picker class=" ...

  7. 阿里云服务器对外开放tomcat端口访问

    今天第一次在阿里云服务器ecs上安装完成tomcat,然后启动tomcat之后.在本地输入ip:端口,发现不能访问. 出现这个的原因可能是你购买的服务器是 专有网络 类型的 如果是专有网络类型的服务器 ...

  8. 04-struts2获得参数

    1 struts2 获得参数 1-属性驱动获得参数 1 Demo8Action package www.test.c_param; import java.util.Date; import com. ...

  9. 2、java内存间交互操作

    关于主内存与工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存,如何从工作内存同步回主内存之类的实现细节,java内存模型中定义了8种操作来完成,虚拟机实现时必须保证这8种操作都是原子的 ...

  10. 解决引入外部文件(图片、js等)出现 403 net::ERR_ABORTED 的问题

    页面中引入外网的链接资源,会产生一个新的http请求.为了安全(URL里可能包含用户信息),浏览器一般都会给这写请求头加上表示来源的referrer 字段. 所以,此时我们需要隐藏外部链接中的refe ...