这才是你想要的C语言学习路线

作为一门古老的编程语言,大家熟知它不仅是因为拥有48年的发展历程,更主要还是因为当下大部分程序员走入编程世界第一个学习的语言就是C语言。

而近年来高速发展的物联网和智能设备,又把C语言推向了风口浪尖,让它一举成为TOBLE 2019年度编程语言榜首。

熟悉C语言的程序员们更喜欢称C为“造轮子”的语言,因为它什么都能做。游戏公司后台开发、通信公司后台开发、服务端底层应用优化、后台系统驱动和内核……在程序员眼里,这个48岁的C语言几乎是无所不能的。

当然,很多人会觉得C语言入门难,不能像其他编程语言一样快速获得成就感。但仍然有很多技术大咖建议大家有必要学一下C语言。因为优秀的程序员并不是精通某一种编程语言,而是能精确把握编程思想。

这恰好是学C语言的一大好处——可以深入了解计算机底层运行机制。

现在常见的高级语言的底层几乎都是C语言实现的,所以,无论是学什么高级原理,要想掌握其内部原理,借助C语言就可以轻松了解。

01

学习C语言的建议

除了C语言本身之外,程序员必学的内容还有数据结构和算法、数据库原理、计算机网络、操作系统、设计模式,这些都是从事开发必须掌握的基础技能。

在初学C语言时,很多新人会觉得太难了,可能会遇到有些问题理解不透,有的是表达方式与以往数学学习中不同(如运算符等)。这个时候万万不能不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解。

学习编程语言就是一个坚持看、敲、写的过程。

给自己定一个学习目标

很多人刚开始学习热情十分浓厚,但三分钟热度过后就失去了兴致。当学习有了目标就有了方向,努力往那个方向专研总会学有所成。

认准路线

就按计划学习C语言的学习路线是从基础语法再到高阶算法,不能一口吃成胖子,所以当大家选择了一本可以系统学习的书就认真学完。

多思考,多读源码

在自己无法自主编写代码的时候,可以模仿别人写的代码,学习其中的思想,一步步形成自己的东西,慢慢你就会发现你也可以了。

自己改写程序

通过前面的学习,应该已经掌握一些基本的编程技巧。一定要有自己的想法,然后让自己的想法通过程序来实现。编程语言的学习过程就是坚持的过程,只要掌握了一种编程语言,再去学习其他的语言就很轻松了。

了解C11新特性

2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899: 2011,简称为 C11 标准。

C11标准新引入的特征尽管没 C99 相对 C90 引入的那么多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。

此次,委员会提出了一些新的指导原则。出于对当前编程安全的担忧,不那么强调“信任程序员” 目标了。而且,供应商并未像对 C90 那样很好地接受和支持 C99。这使得 C99 的一些特性成为 C11 的可选项。因为委员会认为,不应要求服务小型机市场的供应商支持其目标环境中用不到的特性。

另外需要强调的是,修订标准的原因不是因为原标准不能用,而是需要跟进新的技术。例如,新标准添加了可选 项支持当前使用多处理器的计算机。

02

怎么学习C语言

那该如何学C语言呢?希望我整理的 C语言的学习路线,能对你有帮助!

首先是C语言的基础语法:变量、字符串、条件、循环、数组、函数、结构体等,然后就是指针、内存管理等C语言中至关重要的两大标准。

因此,学习C语言推荐大家可以从《C Primer Plus》开始入门,系统地了解C语言的基础语法和简单应用。

对C语言有一定认知之后,就可以通过《C和指针》和《C专家编程》以及《C陷阱与缺陷》等高阶图书学习C语言中最重要的指针等内容了。

几乎所有C语言程序员的都会去看斯蒂芬·普拉塔的《C Primer Plus》。这本畅销38年了图书对于 C 语言初学者来说,就像引路人一样意义非凡。

从1984年至今,《C Primer Plus》已经升级到了第6版,作者初心不变——致力于编写一本指导性强、条理清晰而且有用的C语言教程。所以,书中大量完整的、可运行的程序及详细的注释有助于理解代码和概念。

作者不仅阐述了语法中正确的形式,同时也指出错误的代码出现的问题,更是全面讲述了 C 语言编程的相关概念和知识,并且涵盖了 C 编程语言最近的变动发展、以及 C11 标准。

如果你是学习C的同学,可以选择《C Primer Plus第6版 中文版》入门。

C语言入门

C Primer Plus(第6版)中文版

作者: 【美】Stephen Prata(史蒂芬 普拉达)

译者: 姜佑

几乎所有C语言程序员的都会去看斯蒂芬·普拉塔的《C Primer Plus》。这本畅销38年了图书对于 C 语言初学者来说,就像引路人一样意义非凡。

从1984年至今,《C Primer Plus》已经升级到了第6版,作者初心不变——致力于编写一本指导性强、条理清晰而且有用的C语言教程。所以,书中大量完整的、可运行的程序及详细的注释有助于理解代码和概念。

与市面上其他的教程书籍相比,《C Primer Plus(第 6 版)中文版》最大的特点就是读起来不会有枯涩烦躁之感。

因为斯蒂芬·普拉塔十分在意读者在阅读过程中的阅读体验,所以书中新出现的每一个术语,符号,都给出贴近读者目前知识储备的和理解能力的解释。

而且,这本书在编排上也十分与众不同,在每个知识点后面都会附带一个“程序清单”,也就是程序实例,这是理解编程知识点的绝好方法,供初学者自己手动实操,提升编程水平。

更有趣的是,作者不仅阐述了语法中正确的形式,同时也指出错误的代码出现的问题,更是全面讲述了 C 语言编程的相关概念和知识,并且涵盖了 C 编程语言最近的变动发展、以及 C11 标准。

这就是为什么异步君会把先推荐这本书,对初学者来说,系统学习 C 语言是非常有必要的,这本书就是最适合的。

C Primer Plus(第6版)中文版习题解答

作者: 【美】Stephen Prata(史蒂芬 普拉达)

在过去 40 多年里,C 语言已成为最重要、最流行的编程语言之一,学习 C 语言的人很多,但能运用自如的却远远不到一半。

为了每个程序员都能将所学的知识落实到实际项目,《C Primer Plus(第 6 版)中文版 习题解答》面世了,它是Stephen Prata根据《C Primer Plus(第 6 版)中文版》而撰写的,由北京师范大学名师详细剖析所有题目,全面提升 C 编程能力的优选编程练习册。

针对于提高 C 语言的编程技能、理解计算机原理。看书很重要,但训练更重要,看书和做题应该同时进行的才能快速提升编程水平,从而在实际项目中运用自如。

它在《C Primer Plus(第 6 版)中文版》的每章内容做了简单总结和梳理的基础上,对所有复习题和编程练习做了详细的解答。

人性化的是,书中的每一章节首先提供了思维导图,方便读者快速查询常用的知识点,然后简明扼要地概括和提炼了每章的难点和重点知识,它既可作为学习笔记,也可以作为知识点速查手册。

C语言进阶

C和指针

作者: 【美】Kenneth A.Reek

译者: 徐波

“不会用指针就不会 C 语言”,这是程序员间互相流传的信条,他们认为正是指针使得 C 语言如此之强大,所以想要掌握 C 语言的精髓,首先要精通指针!

那么要如何学好指针呢?推荐大家《C 和指针》这本书,作者是美国Rochester工业学院计算机系教授Kenneth A . Reek,他有着20年的C编程教学经验,他的Pointers on C更是获得ACCU的高度评价。

CSDN论坛大牛曾这样点评这本书:“是在职人员开发必不可少的参考书,经典中的经典“。

除此之外,作者在书中将各种指针用法都写出来了,甚至连一些堪称奇葩的指针用法也没有放过,以简洁准确的文字、配合贴切的图示来进行讲解,让广大读者对指针和数组有了更加深刻的认识,特别是多维数组、指针的指针、指向数组的指针和指针的数组的区这些平日里让人头疼的知识点。

而且,《C 和指针》还提供了与 C 语言编程相关的全面资源,通过对指针的基础知识和高级特性的探讨,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的 C 编程话题,并且给出了很多编程技巧和提示,加上每章后面有针对性很强的练习,帮助程序员把指针的强大功能融入到自己的程序中去。

ACCU主席Francis Glassborow曾说:“我竭尽全力地推荐这本我所见过的C编程入门图书。作者深知读者所需,并为他们打下良好基础。如果你已经开始学习C语言但始终不得要领,不妨试一试这本书。”

这本书非常适合 C 语言初学者和初级 C 程序员阅读,作为程序员,启蒙书很重要,但读完启蒙书后,强烈建议将这本书作为你第二本必读书。

C陷阱与缺陷

作者: 【美】Andrew Koenig

译者: 高巍

不管你是普通程序员还是 C 编程高手,在进行 C 编程过程中,都会从词法、语法、语义、链接、库、预处理器、可移植性等层次和方面遇到问题——编程过程中的陷阱和障碍。

那么要如何规避这些陷阱和障碍呢?

建议一定要读Andrew Koenig教授的《C 陷阱与缺陷》, 他是AT&T公司Shannon实验室大规模编程研究部门中的成员,同时也是C++标准委员会的项目编辑,编程经验超过30年,其中有15年在使用C++,他还出版了超过150 篇和C++有关的论文,并且在世界范围内就这个主题进行过多次演讲,是世界级的C编程大师。

《C 陷阱与缺陷》主题是你平时往往不会注意 C 中的各类细节:注释的嵌套性,怎么判断编译器是否允许嵌套注释、运算符优先级,结合顺序,编译器贪婪、assert 的实现方法,避免 if、少敲一个分号导致各种血案、注意函数、if 等的作用域、注意字符集,防止移植性问题、变长参数,stdargs 等等,及一些非常底层,会涉及到大端法、小端法和数据的位模式的问题。

ACCU主席Francis Glassborow曾说:

Andrew Koenig以自己在Bell实验室时发表的论文为基础,结合自己的工作经验扩展成这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。本书所揭示的知识,至少能够帮助你减少C代码和初级C++代码中90%的Bug。”

书中所有内容是作者结合自己的工作经验而撰写的,并给出了若干具有实用价值的建议,本书的主旨就是要帮助 C 程序员绕过编程过程中的各种陷阱和障碍。

本书适合有一定经验的 C 程序员阅读学习,即便你是 C 编程高手,本书也应该成为你的案头必备书籍。

C专家编程

作者: 【美】Perter Van Der Linde

译者: 徐波

最优秀的 C 程序员所使用的编码技巧,你知道几个?

如何深入学习 C 语言知识是每个 C 程序员都遇到的难题,市面上的书籍大多数枯燥乏味,而Peter van der Linden 认为:任何人都可以享受编程,编程应该是一项精妙绝伦、充满生机、富有挑战的活动,而讲述编程的书籍也应时时迸射出激情的火花。

Peter van der Linden是一名技术专家和技术作家。他曾在Sun公司和苹果公司工作多年,并曾任摩托罗拉公司首席Android技术布道师、Immersion公司首席Android开发布道师,自2014年至今在万事达卡公司任高级开发布道师。他还出版了一系列有关C语言、Java语言及Linux操作系统的经典技术图书。

其中《C专家编程》展示了专业的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中对C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题从实例出发,进行了细致的讲解和深入的分析,Peter认为这对C程序员具有非常高的实用价值。

同时,它也是一本教学性质的书籍,但它希望重新把快乐融入编程之中,书里所提到的绝大多数教程、提示和技巧都是无法在其他书上找到的,即使有的话,它们通常也是作为心得体会手工记录在手册的书页空白处或旧打印纸的背面。这本书是Peter以及 Sun 公司编译器和操作系统小组的同事们在多年 C 语言编程实践中,积累了大量的知识和经验后,用生动的语言来讲述这些有趣的 C 语言故事和轶闻,诸如连接到因特网上的自动售货机、太空软件中存在的问题,以及一个 C 语言的缺陷怎样使整个 AT&T 长途电话网络瘫痪等。

ACCU主席Francis Glassborow曾说:

即使你读过Andrew Koenig的《C陷阱与缺陷》,你还是应该看看Peter van der Linden的这本书。我想,他们两人的书你都应该千方百计地弄到,如获至宝地捧读。如果我是你的上司,这是必须的要求。”

斯克兰顿大学计算机科学系教授Jack Beidler曾说:

这本书不只是写得清晰,读起来也很有趣。这本书的基调和风格使其备受专业程序员的喜爱,也会使其非常受大学生的喜爱。单单是附录A就已经使这本书必须购买了。书中充满了极好的建议。”

希望《C专家编程》能帮助你精通这门日益流行的从 C 语言演化而来的语言。

C Primer Plus 第6版中文版学习视频

这是以畅销图书《C Primer Plus》第6版中文版为教材的一门C语言基础课程,详细讲解了程序设计的概念及C语言核心知识要点。通过本课程的学习,使学习者掌握程序设计的基本方法,具有一定的的应用计算机解决问题的能力。

如何学习C语言?很容易,C语言从入门到入土,从长发飘飘到秃顶

在未来计算机专业讲又要迎来一批新生小鲜肉!C语言入门到入土,从长发飘飘到秃顶的老铁也越来越多,其中,想自学成才的也占了不少数;想笨鸟先飞的也占有不少数。

传说中的C语言就是那么刺激和高挑战

没有基础的人也可以直接学习,速度会慢一点

C语言上手可能不是很容易,首先你的花费一周时间掌握最基本的内容。(PS:没有基础的人也可以直接学习,速度会慢一点

  • 常用的基本数据类型(int,float,double,char)的使用,必然包含常用的输入和输出函数。
  • 程序的三大结构学习:顺序结构,选择结构,循环结构。
  • 模块化程序设计的函数了解下

你再花2周学习些:

  • 指针
  • 结构体
  • 文件

此时,有些人就在简历中得意的自称\”会\”C语言了。

但是学到如此程度,在实际编程中会经常遇到挫折,主要源自理解不够深入,仅仅体验了一下C语言语法而已。

随意列举一些新手普遍存在的问题:

  1. 不了解C语言模块化设计,变量名, 指针概念含混。
  2. 更换编译器,程序出现怪异的结果。
  3. 怎样定义和声明C语言全局变量和函数最好?
  4. 在C语言中,一个结构不能包含指向自己的指针吗?
  5. 什么是C语言最好的代码布局风格?
  6. 为什么不能向接受const char **的函数传入char **?
  7. 用缩写“if(p)”检查空指针是否可靠?
  8. char *指针指向一些int变量,如何跳过?
  9. 怎样建立和理解非常复杂的声明?

师傅给我剃个光头

拥有某项技能的程序员的价值,可以用学习技能所需的成本来衡量。你用2周学习达到的这种程度,对于企业就是没有价值的,因为老板可以让一个公司里任意其他语言的程序员经过2-3周的学习就能达到你现在的程度。

C语言的 简洁紧凑、灵活方便。快速开发对项目有价值,但这不是你的价值,是C语言的价值。所以提高自身价值,也就是不让别人轻易追上你。以极低的成本替代你。

你只能快跑,进一步学习,C语言语言层面还需要学习下面一些内容:

  • 1.C语言运行机制,编译过程。
  • 2.C语言模块化思想。
  • 3.深入理解C语言面向过程的设计思路。
  • 4.C语言编程思维。
  • 5.C语言文件同步操作

上述都是语言层面的,属于内功。实战中当然也需要一些更为具体的外功,训练外功可以从熟悉C语言标准库开始,这些模块能进入标准库说明他们足够好并且在实际项目中足够常用,列举一些极为常用的:

  • 1.正则表达式
  • 2.Socket网络编程
  • 3.读取PE文件操作
  • 4.进程内存查询与修改
  • 5.常用的数据结构与算法

老板我要换种洗发水

无论练习内功或外功,结合实战都是最好的训练方式和检验手段,可以根据个人情况以及喜好选择,如:

  1. 网络编程借用第三方网站为跳板做实时信息查询.(例如身份证查询)
  2. 使用第三方库开发小游戏案列,例如推箱子,扫雷,连连看,消消乐
  3. 编写小应用,个人词典啊
  4. 使用C语言做算法题,ACM,还有各种地方的什么杯(飞机杯,罩杯)
  5. 使用C语言做数学建模或者数学计算
  6. 使用第三方库做终端模式的播放器
  7. OpenGL做图形处理

个人建议选择小项目进行实训,有些新手上来就想定一个大目标,做的时候很挫折,往往半途而废。把小东西先实现,然后优化。接下来添加新功能,慢慢迭代把小东西做大。这样在做的时候,每实现一个小功能你都会有成就感,激励继续前进。

可能经过比较漫长的一段时间,你成为了一个熟练的C语言小瘪三,还有些高级话题可以继续学习:

  • windows编程
  • Linux编程
  • Qt框架编程

这些高级话题在开发中经常使用, 它们可以帮你更便利实现功能。

通常自称一个月光速学了会C语言的人基本都不是天才,只是浮躁,目标定的比较低而已,认知局限而已。不要太过急功近利,慢慢玩,精进。

当然啦,自学C语言想拔高精进大多都是困难的

  • 没有良师讲解,有些知识点和技术没法消化
  • 自身理解力不够,稍微高深一些的就看不懂了
  • 还有的……
  • 时间不够,自制力也不够

​如果你基础比较差,不妨关注视频教程专栏教程《C语言51课视频教程合集片》:

通俗易懂,深入浅出,文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

图文并茂,通俗易懂《C语言项目视频集锦》

世上唯一不能复制的是时间,唯一不能重演的是人生。该怎么走,过什么样的生活,全凭自己的选择和努力。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。