学习C语言,如果跟着大学老师学不懂的话,那么应该怎么学C语言呢?作为学长,我简单把我的想法说一下吧。
1. 自学才是硬道理。强大的自学能力是独自解决问题能力的根本,程序员需要拥有强大的独自解决问题的能力。
2. 入门阶段,coding为主,看书为辅。看书只是C语言学习的最简单的一步。入门阶段,动手实践,刷题才是最重要的。coding能够让你变强。
3. 请记住这个公式:只看书+不实践== C语言挂科
4. 如果你以后不想当优秀的工程师,不想在计算机这条路上走太远,只当一个平平淡淡的码农。推荐一条路:跟着老师一步一步走,跟着大学的培养方案,一步一步跟着走就行了。
5. 学长从过来人的角度,推荐一条路:MOOC的浙大在线教程当作主干道,买一本《The C Programming Language》先当作信仰供2个月。MOOC在11月前啃完它,然后尝试去看The C Programming Language,就行了。
6. 如果你想通过计算机这条路走向人生巅峰,推荐一条路:现在开始,买一本C primer plus,简单看一遍前几章语法,打开PTA(浙大的online judge),找一些basic的题,然后去疯狂刷,不懂就思考几小时,几小时没有结果,就群里问。大量的做题,到了开学,再看看The C Programming language,然后向数据结构与进攻,然后再学习算法分析,能在大一结束前学完,差不多了,从此走向人生巅峰。
7. 不懂就问是不可行的!学习很难受,如果有啥不懂的,就多思考,尝试自己去解决问题。如果确定了自己无法解决,那就可以问老师,问学姐,问学长了。问学姐学长不是为了答案,而是为了见多识广。
8、CSDN真的是个好东西。评论里面有人说不敢苟同这个观点,我很理解,也赞同你的想法。CSDN是一个开放的平台,里面有很多大佬,也有很多小白,博客的质量有高有低,甚至有些是错的,这很正常。但有这么一句话:择其善者而从之,其不善者而改之。这么久了,仔细想了想,CSDN上的确给予了我很多帮助,这一点是毋庸置疑的。在借助CSDN寻找答案时,过程中虽然走了很多弯路,但现在反过来看 真的都是值得的。
9、国内的教科书,少碰。具体原因:中国应试教育的弊端,东西太死板。
比如:函数的传参,讲了一对概念叫做:实际参数与形式参数,然后就没了????然而:讲一下局部变量的生命周期,解释一下函数的参数列表是定义了新的变量就完事了。
比如:getchar()没有讲,就讲scanf(),告诉我们要在变量前加个&,而&是个什么东西?是取地址符,所以&取的地址究竟是什么?
比如:在指针那一章,莫名其妙来了个地址?地址是什么个玩意?不介绍一下内存的编制和存储单元,想让我死记硬背?
一个指针就是一个变量,这样的点睛之笔,竟然全程藏着掖着。所以难是有道理的,因为书没选对。
这里不是一棒子打死所有国内教材,而是吐槽一下,当初走的弯路,浪费太多时间,心累。。。。。。
10、可以适当百度一下:什么是开发集成环境。开发集成环境(IDE),入门推荐codeblcoks(具体咋用,自己CSDN搜索:codeblcoks环境配置),不推荐DevC++。为什么不推荐呢?编译器会有许多扩展语法,就像用fflush(stdin) 清空stdin流或者case:1 … 2;这样的语法(感谢评论区强调了这并不是标准定义,而是一种编译器的拓展功能)。dev自带的编译器老了,不支持这种编译器的拓展功能。因此不推荐用DevC++。而codeblcoks作为一个开源的软件,现在也是活着的,还有人维护,dev虽说是一代经典,但毕竟dev并没有随着编译器的进步而进步。
总用老的,真的很难受,当然毋庸置疑有人肯定会怼我说,我身边的人反驳我的意见总是这么一句话:''入门阶段不需要什么高端的写法。'' 肯定一点:这个观念没有任何问题,但我是一个喜欢新事物的人,喜欢琢磨一些教学内容外的新知识,因此推荐大家用带有较新的编译器的codeblcoks。
11、C语言学到指针可以提前百度一下内存是什么,了解一下内存分区,如果能思考清楚为什么指针大小在32位操作系统是4个字节?思考不清楚,那就去问老师,老师们应该很喜欢能提出这样问题的同学。当然,老师能不能解释清楚又是另外一回事了。详情可进阶计算机组成原理,计算机操作系统原理。
12、可以适当了百度一下:内存与硬盘的关系。即一般情况下程序保存在硬盘中,运行时会被''拷贝''到内存中。硬盘中的中任何数据只有调入内存中才能真正使用。详情可进阶计算机组成原理,计算机操作系统原理。另外想要成为一个优秀的、有能力程序员,做软件开发的话,就来学习C/C++吧!你如果感觉自学C/C++语言有困难的话,我本身是一个C/C++出身的程序员,大家有兴趣可以一起来学习筘羣,C/C++编程学习,--七八四;及1丶43后--133。不管你是转行还是找工作,大家都一起成长进步。
13、可以适当百度一下什么是编译器、什么是gcc/g++/gdb与GNU与MingGw。了解就好,不需要深入。如果能试着配置一次环境,用命令行编译一个main.c文件,如果失败了,不骄不躁静下心来千方百计去做到这一点。多的不敢说,至少可以说明一点,你的解决问题的能力很到位。当然,做不出来也没什么,学到越后边,自然就慢慢的会了。详情可进阶编译原理。
14、萌新就不要考虑:(宇宙最强编辑器,狗头滑稽.jpg)记事本、vim 、VSCode、VS、eclipse、idea等等了 ,到了那个高度,自然就都会接触到了。
15、尽早决定考研与就业。
要考研的就好好学专业课 好好学学校的必修课,把考研的知识学到位,考个高分,在学有余力的情况下根据你选择的方向,学习一定的相关工程知识。选择一个会指导你并且带你干活的导师,请务必远离只让你干活当苦力不指导你的导师。
要就业的就可以战略性的放一放高数、线代等(不是不学,而是不用学的特别特别深入。举个例子:没必要把一天24小时,分10个小时给这些科目。很有必要将24小时中的的8个小时给C语言、计算XX原理等专业课,1小时玩耍,1小时学高数等课程。残酷的现实告诉我:这些理论知识,学的再好,多年不用,也会忘的差不多,需要的时候必须二次学习。所以不打算考研的同学,重心可以向专业课倾斜很多。)。
一定要选择一个发展方向:web开发(大学期间前后通吃才有搞)、机器学习、XX引擎游戏开发、神经网络等计算、大数据可视化、服务器运维、嵌入式设备、密码学、网络安全等等一系列方向。选择一个并且努力学下去,毕业后才不会迷茫。
这个方向定的越早,在毕业时别人迷茫、唉声叹气时,你会变得越来越充满自信, 因为你很清楚,你大学4年学了什么,你拥有实力,拥有竞争力,工作后几年,你将是一名优秀的XXXX工程师,也不是一名普普通通的码农。
领取专属 10元无门槛券
私享最新 技术干货