一个资深C语言工程师说如何学习C语言,附赠2019年最新自学教程
谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。
了解一些基本知识
一.C语言的背景
就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。
C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
二.二大语系二种不同的学习方法
笔者学习过很多程序语言,例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),javascript,JSCRIPT ,VBSCRIPT,JAVA,ASP,FOXPRO,PERL等等,就本人实践所得,其实高级程序语言分为两大语系。一路是以C为主的程序语言,例如:javascript,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VBSCRIPT等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。
讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。
1、多看代码
在有一定基础以后一定要多看别人的代码。 注意代码中的算法和数据结构。 毕竟学C之后的关口就是算法和数据结构。提到数据结构,指针是其中重要的一环,绝大多数的数据结构是建立在指针之上的,如链表、队列、树、图等等,所以只有学好指针才能真正学好C。别的方面也要关注一下,诸如变量的命名、库函数的用法等等。有些库函数是经常用到的。对于这些函数的用法就要牢牢记住。
2、要自己动手
编程序是个实干的活,光说不练不行。刚开始学的时候可以多练习书上的习题。 对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象。 自己动手的过程中要不断纠正自己不好的编程习惯和认识错误。有一定的基础以后可以尝试编一点小游戏,文曲星之类的电子词典上小游戏很多,照着编作为练习。基础很扎实的时候,可以编一些关于数据结构方面的东西,诸如最经典的学生管理系统。之后.....学汇编、硬件知识。
3、选择一个好的编译器
英文版Turbo C v2.0没话说,最经典的C编译器(下载地址: 网页链接 ),其次推荐一个win-tc 1.91,支持windows下的编译器。(下载地址: 网页链接 )
4、关于养成良好的编程习惯
基本上每本C教材上都要提到。作为新手这条一定要时时遵守。具体方面:
(1) 在比较复杂的代码后面要有注释。 如果光溜溜一堆代码,别人就不可能看懂你的代码,而且也不利于查找错误。除非你一直编东西给自己看。能在代码里说明白的就一定要在代码里体现。比如变量名、函数名,在命名的时候尽量说明是干什么用的。
(2)注意语句的嵌套不能过长,一般来说,一段代码里Tab要少于8个。 简单说就是语句最多8个嵌套。 对于新手来说,这个标准还要下降。有一个好习惯是,把主函数尽量写简短。经常看到别人的代码是主函数只有几行,几个函数调用,而定义全在主函数外部。这样一是减少了主函数内部的嵌套,二是比较精简,容易读懂。
(3)注意语句的选择。并不是分支语句就用if循环就用while、for。在适当的情况下switch和do while语句也是要用的。在某些时候,switch语句比if语句更加精练明了,而do while比while少一个循环。
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo C2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
最后,小编为大家准备了2019年最新最全套的C语言视频自学教程,感谢趣的小伙伴赶快领取学习吧!
资料目录
01_尚学堂_杨建民C语言__Xcode的使用
02_尚学堂_杨建民C语言__目录结构
03_尚学堂_杨建民C语言__终端的使用_1
04_尚学堂_杨建民C语言__终端的使用_2
05_尚学堂_杨建民C语言__终端的使用
06_尚学堂_杨建民C语言__第一天作业
07_尚学堂_杨建民C语言__C语言的编写过程
08_尚学堂_杨建民C语言__第一个简单的C语言程序
09_尚学堂_杨建民C语言__标识符
10_尚学堂_杨建民C语言__标识符的命名规则
11_尚学堂_杨建民C语言__基本数据类型的存储_1
12_尚学堂_杨建民C语言__基本数据类型的存储_2
13_尚学堂_杨建民C语言__数据格式化输出_1
14_尚学堂_杨建民C语言__数据格式化输出_2
15_尚学堂_杨建民C语言__常量-1
16_尚学堂_杨建民C语言__变量-2
17_尚学堂_杨建民C语言__运算符_1
18_尚学堂_杨建民C语言__运算符_2
19_尚学堂_杨建民C语言__关系运算符
20_尚学堂_杨建民C语言__练习讲解
21_尚学堂_杨建民C语言__类型转换
22_尚学堂_杨建民C语言__类型转换练习讲解
23_尚学堂_杨建民C语言__if语句-1
24_尚学堂_杨建民C语言__if语句-2
25_尚学堂_杨建民C语言__if语句-3
26_尚学堂_杨建民C语言__if语句练习
27_尚学堂_杨建民C语言__switch语句
28_尚学堂_杨建民C语言__switch语句练习
29_尚学堂_杨建民C语言__while循环语句-1
30_尚学堂_杨建民C语言__while循环语句-2
31_尚学堂_杨建民C语言__for循环语句
32_尚学堂_杨建民C语言__for循环语句练习
33_尚学堂_杨建民C语言__一维数组_1
34_尚学堂_杨建民C语言__一维数组_2
35_尚学堂_杨建民C语言__一维数组-3
36_尚学堂_杨建民C语言__一维数组练习-1
37_尚学堂_杨建民C语言__一维数组练习-2
38_尚学堂_杨建民C语言__冒泡排序
39_尚学堂_杨建民C语言__冒泡排序感言
40_尚学堂_杨建民C语言__选择排序
41_尚学堂_杨建民C语言__数组插入元素后排序-1
42_尚学堂_杨建民C语言__数组插入元素后排序-2
43_尚学堂_杨建民C语言__数组插入元素后排序_3
44_尚学堂_杨建民C语言__数组插入元素后排序_4
45_尚学堂_杨建民C语言__数组插入元素后排序_5
46_尚学堂_杨建民C语言__数组插入元素后排序_6
47_尚学堂_杨建民C语言__二维数组初始化
48_尚学堂_杨建民C语言__二维数组练习
49_尚学堂_杨建民C语言__字符串定义
50_尚学堂_杨建民C语言__字符串的输入输出-1
51_尚学堂_杨建民C语言__字符串的输入输出-2
52_尚学堂_杨建民C语言__字符串的输入输出_练习
53_尚学堂_杨建民C语言__字符串的输入输出_练习
54_尚学堂_杨建民C语言__字符串操作函数_1
55_尚学堂_杨建民C语言__字符串操作函数_2
56_尚学堂_杨建民C语言__字符串操作函数
57_尚学堂_杨建民C语言__字符串操作函数练习
58_尚学堂_杨建民C语言__函数的定义和参数_1
59_尚学堂_杨建民C语言__函数的定义和参数_2
60_尚学堂_杨建民C语言__函数的声明和调用
61_尚学堂_杨建民C语言__函数的声明和调用练习讲解_1
62_尚学堂_杨建民C语言__指向数组的指针
63_尚学堂_杨建民C语言__函数的应用
64_尚学堂_杨建民C语言__函数的应用练习讲解
65_尚学堂_杨建民C语言__递归
66_尚学堂_杨建民C语言__递归练习
67_尚学堂_杨建民C语言__递归练习答案
68_尚学堂_杨建民C语言__指针
69_尚学堂_杨建民C语言__指针运算
70_尚学堂_杨建民C语言__指针运算练习讲解-1
71_尚学堂_杨建民C语言__指针运算练习讲解-2
72_尚学堂_杨建民C语言__指向数组的指针
73_尚学堂_杨建民C语言__指针与函数
74_尚学堂_杨建民C语言__指针与函数练习讲解
75_尚学堂_杨建民C语言__字符指针与字符串指针-1
76_尚学堂_杨建民C语言__字符指针与字符串指针-2
77_尚学堂_杨建民C语言__字符指针与字符串指针-3
78_尚学堂_杨建民C语言__数组实现队列
79_尚学堂_杨建民C语言__const指针
80_尚学堂_杨建民C语言__指针数组
81_尚学堂_杨建民C语言__指向数组的指针
82_尚学堂_杨建民C语言__冒泡排序函数
83_尚学堂_杨建民C语言__字符串数组排序解答