这才是你想要的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++编程?那就赶紧看看吧!

1、学习C/C++编程语言基础

掌握语言基础是第一步,如果不了解基础知识,那么就不知道自己是否做错了或者接下来该怎么做。掌握C/C++相关的基础知识,如C语言基本语法、C++基础语法或者容器、迭代器和虚函数等等。

2.编写小程序

对大多数的基础知识和概念足够熟悉,并且能够以某种方式将它们联系起来,那么可以进行下一步了,开始尝试编写一些非常基本的C语言程序,如计算器的实现、C语言推箱子游戏程序,C++俄罗斯方块游戏等。前几个程序对来说可能会困难重重。但一旦挺过去接下来即使这些问题再次出现也能轻松解决。

3、使用Windows API编写高级程序

当完成了大部分的基础程序编写,掌握了基本的编程技巧之后就可以进行下一步了。会建议努力学习Windows窗口和Windows常用的API。熟悉API提供的各种类和接口,并利用它们来创建程序。应该查找已经存在的API和方法来实现功能,而不是自己实现这些逻辑,熟悉这些API,在这些已有的API中寻求解决方案。

4、编写桌面程序

编写一个Windows桌面程序软件或者GUI应用程序,如QQ社交聊天系统。在前面的学习中,已经掌握了最基本的Windows开发知识,现在需要去探索然后编写出这两个应用程序。当最终完成这两个练习时,谈到C/C++编程会获得空前的自信,可以帮助养成不惜一切代价完成一项任务的好习惯。这种持之以恒的态度对职业生涯的长远发展是非常重要的。

5、C++博客与论坛

学习编程的方式有多种多样,你可以通过看书、视频教学的方式学习编程。初学者可以在一些C/C++的博客和论坛上参考、学习他人的经验和方法,能够从中开拓思想,并提升自己的思维能力。

如何入门C/C++、如何安排学习路线、零基础怎么学习C/C++都是大家比较关系的问题,以上是帮助大家快速学习C/C++入门的一点建议,希望对大家有帮助。

PS:另外对于学习编程或者正在工作的朋友,如果你想更好的提升你的编程能力乃至转行,弯道超车,快人一步!笔者这里或许可以帮到你~

编程学习书籍分享:

编程学习视频分享:

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

点击下方【了解更多】微信公众号:C语言编程学习基地

学习C语言的7个步骤,对照一下,看你处在哪个阶段?

C是编译型语言。如果之前使用过编译型语言(如,Pascal或FORTRAN),就会很熟悉组建C程序的几个基本步骤。但是,如果以前使用的是解释型语言(如,BASIC)或面向图形界面语言(如,Visual Basic),或者甚至没接触过任何编程语言,就有必要学习如何编译。别担心,这并不复杂。首先,为了让读者对编程有大概的了解,我们把编写C程序的过程分解成7个步骤(见图1.3)。注意,这是理想状态。在实际的使用过程中,尤其是在较大型的项目中,可能要做一些重复的工作,根据下一个步骤的情况来调整或改进上一个步骤。

图1.3 编程的7个步骤

1 第1步:定义程序的目标

在动手写程序之前,要在脑中有清晰的思路。想要程序去做什么首先自己要明确自己想做什么,思考你的程序需要哪些信息,要进行哪些计算和控制,以及程序应该要报告什么信息。在这一步骤中,不涉及具体的计算机语言,应该用一般术语来描述问题。

2 第2步:设计程序

对程序应该完成什么任务有概念性的认识后,就应该考虑如何用程序来完成它。例如,用户界面应该是怎样的?如何组织程序?目标用户是谁?准备花多长时间来完成这个程序?

除此之外,还要决定在程序(还可能是辅助文件)中如何表示数据,以及用什么方法处理数据。学习C语言之初,遇到的问题都很简单,没什么可选的。但是,随着要处理的情况越来越复杂,需要决策和考虑的方面也越来越多。通常,选择一个合适的方式表示信息可以更容易地设计程序和处理数据。

再次强调,应该用一般术语来描述问题,而不是用具体的代码。但是,你的某些决策可能取决于语言的特性。例如,在数据表示方面,C的程序员就比Pascal的程序员有更多选择。

3 第3步:编写代码

设计好程序后,就可以编写代码来实现它。也就是说,把你设计的程序翻译成C语言。这里是真正需要使用C语言的地方。可以把思路写在纸上,但是最终还是要把代码输入计算机。这个过程的机制取决于编程环境,我们稍后会详细介绍一些常见的环境。一般而言,使用文本编辑器创建源代码文件。该文件中内容就是你翻译的C语言代码。程序清单1.1是一个C源代码的示例。

程序清单1.1 C源代码示例

在这一步骤中,应该给自己编写的程序添加文字注释。最简单的方式是使用C的注释工具在源代码中加入对代码的解释。第2章将详细介绍如何在代码中添加注释。

4 第4步:编译

接下来的这一步是编译源代码。再次提醒读者注意,编译的细节取决于编程的环境,我们稍后马上介绍一些常见的编程环境。现在,先从概念的角度讲解编译发生了什么事情。

前面介绍过,编译器是把源代码转换成可执行代码的程序。可执行代码是用计算机的机器语言表示的代码。这种语言由数字码表示的指令组成。如前所述,不同的计算机使用不同的机器语言方案。C编译器负责把C代码翻译成特定的机器语言。此外,C编译器还将源代码与C库(库中包含大量的标准函数供用户使用,如printf()和scanf())的代码合并成最终的程序(更精确地说,应该是由一个被称为链接器的程序来链接库函数,但是在大多数系统中,编译器运行链接器)。其结果是,生成一个用户可以运行的可执行文件,其中包含着计算机能理解的代码。

编译器还会检查C语言程序是否有效。如果C编译器发现错误,就不生成可执行文件并报错。理解特定编译器报告的错误或警告信息是程序员要掌握的另一项技能。

5 第5步:运行程序

传统上,可执行文件是可运行的程序。在常见环境(包括Windows命令提示符模式、UNIX终端模式和Linux终端模式)中运行程序要输入可执行文件的文件名,而其他环境可能要运行命令(如,在VAX中的VMS[2])或一些其他机制。例如,在Windows和Macintosh提供的集成开发环境(IDE)中,用户可以在IDE中通过选择菜单中的选项或按下特殊键来编辑和执行C程序。最终生成的程序可通过单击或双击文件名或图标直接在操作系统中运行。

6 第6步:测试和调试程序

程序能运行是个好迹象,但有时也可能会出现运行错误。接下来,应该检查程序是否按照你所设计的思路运行。你会发现你的程序中有一些错误,计算机行话叫作bug。查找并修复程序错误的过程叫调试。学习的过程中不可避免会犯错,学习编程也是如此。因此,当你把所学的知识应用于编程时,最好为自己会犯错做好心理准备。随着你越来越老练,你所写的程序中的错误也会越来越不易察觉。

将来犯错的机会很多。你可能会犯基本的设计错误,可能错误地实现了一个好想法,可能忽视了输入检查导致程序瘫痪,可能会把圆括号放错地方,可能误用C语言或打错字,等等。把你将来犯错的地方列出来,这份错误列表应该会很长。

看到这里你可能会有些绝望,但是情况没那么糟。现在的编译器会捕获许多错误,而且自己也可以找到编译器未发现的错误。在学习本书的过程中,我们会给读者提供一些调试的建议。

7 第7步:维护和修改代码

创建完程序后,你发现程序有错,或者想扩展程序的用途,这时就要修改程序。例如,用户输入以Zz开头的姓名时程序出现错误、你想到了一个更好的解决方案、想添加一个更好的新特性,或者要修改程序使其能在不同的计算机系统中运行,等等。如果在编写程序时清楚地做了注释并采用了合理的设计方案,这些事情都很简单。

8 说明

编程并非像描述那样是一个线性的过程。有时,要在不同的步骤之间往复。例如,在写代码时发现之前的设计不切实际,或者想到了一个更好的解决方案,或者等程序运行后,想改变原来的设计思路。对程序做文字注释为今后的修改提供了方便。

许多初学者经常忽略第1步和第2步(定义程序目标和设计程序),直接跳到第3步(编写代码)。刚开始学习时,编写的程序非常简单,完全可以在脑中构思好整个过程。即使写错了,也很容易发现。但是,随着编写的程序越来越庞大、越来越复杂,动脑不动手可不行,而且程序中隐藏的错误也越来越难找。最终,那些跳过前两个步骤的人往往浪费了更多的时间,因为他们写出的程序难看、缺乏条理、让人难以理解。要编写的程序越大越复杂,事先定义和设计程序环节的工作量就越大。

磨刀不误砍柴工,应该养成先规划再动手编写代码的好习惯,用纸和笔记录下程序的目标和设计框架。这样在编写代码的过程中会更加得心应手、条理清晰。

C伴侣推荐

1、C Primer Plus 第6版 中文版

[美] 史蒂芬·普拉达(Stephen Prata) 著,姜佑 译

  • 畅销的重量级C语言大百科全书
  • C语言从入门到精通的入门经典
  • 第五版销售超过250000册

本书详细讲解了C语言的基本概念和编程技巧。

全书共17章。第1章、第2章介绍了C语言编程的预备知识。第3章~第15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入和输出、结构、位操作等。第16章、第17章介绍C预处理器、C库和高级数据表示。本书以丰富多样的程序为例,讲解C语言的知识要点和注意事项。每章末尾设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。附录给出了各章复习题的参考答案和丰富的参考资料。

2、C Primer Plus 第6版 中文版习题解答

史蒂芬·普拉达(Stephen Prata),曹良亮 编

  • 经典畅销图书《C,Primer,Plus》的学习伴侣
  • 北京师范大学名师详细剖析所有题目
  • 全面提升C编程能力的优选编程练习册

这是经久不衰的C语言畅销经典教程《C Primer Plus(第6版)中文版》的习题精解教程图书。 为了锻炼并提升读者的动手编程能力,《C Primer Plus(第6版)》除了在每章正文中包含了大量短小精悍的实例之外,还在每章末尾提供了颇有深度的综合性的复习题和编程练习题。 本书编者曹良亮博士尝试对这些复习题和编程练习给出了自己的理解和解答。 本书每章开篇先采用思维导图的形式给出了本章涵盖的知识点,然后采用简练的文字梳理了每章涉及的理论内容,最后对复习题和编程练习进行了详细的剖析,最后给出了解题思路和代码实现。 作为《C Primer Plus(第6版)》的理想学习伴侣,本书可以切实提升C语言初学人员的编程技能,掌握C语言编程的精髓,为后期的程序开发之路打下坚实基础。

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

点赞 0
收藏 0

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