保姆级零基础C语言学习路线,万字总结!

先说下自身的情况吧,我非计算机科学科班,本科专业学的是电子信息工程,学过模拟电子和数字电子技术,课程与计算机科学专业有点差异,算是半个科班。因此我的计算机体系知识构建,基本都是靠自学,只要掌握正确的学习方法,自学也可以构建起来完备的计算机知识体系。

计算机科学技术CS(ComputerScience)作为一门专业课程,就和其他工科课程一样有自己的理论体系,如果你是计算机专业的同学不用我来教该学什么,计算机专业大学四年学校教的那些就是基础,别小看在学校学的那些看起来没啥用的课程。这有一份中中科大的计算机技术本科主要课程结构安排,科班计算机专业培养路线:

操作系统看的是清华学堂在线和哈工大李志军老师的操作系统,数据结构可以看浙大陈越和何应钦老师讲的数据结构,计算机网络参考哈工大的计算机网络课程,这些课程都是免费的公开课,可以在慕课网或者b站找打视频课程。

最近在知乎上回答了一些C语言学习的问题,发现很多C语言刚入门的同学,对于为什么要学C语言,怎么学好C语言这门课有不少的疑问,很多问题也是我在刚入门时遇到过的。

于是,写下这篇C语言学习路线,解决同学们关于如何学和怎么学的问题。

C语言在计算机体系中,占据着不可替代的位置,起到承上启下的作用。它的语法是很多高级编程语言的基础,比如说Java、C++;向上可以学习高级编程语言,向下可以学习计算机组成原理、操作系统等等偏基础的计算机基础知识。

想要完全掌握C语言,可以先了解C语言的学习内容:

如今C语言入门书太多了,你去网上商店或者图书馆搜索,教材多如牛毛,这就导致很多初学者不知看哪本书,光看名字长的都一样,无从下手选择!

比如学到指针、结构这块内容,感觉似懂非懂,这些内容对于初学者来说是比较难的,尤其是指针,初学者最容易懵逼。但又临近期末考试,老师为了加快教学进度,几乎照着PPT一段段读过。

说起来还要感谢学校的'天书教材',为了搞懂这些内容,我自己找了其他C语言图书和视频,对比着学习,彻底搞懂了C语言基础内容。

现在回头看如果能一开始就接触这些优秀C语言教材的话,学习起来应该能轻松不少。

主要从C语言学习三个阶段来推荐书籍:

群众的眼睛是雪亮的,豆瓣评分就能看出来。

都2022年了,大家都知道,谭浩强老师的C语言程序设计教材不适合入门,因为早几年这本书是很多高校的C语言教材,但是教材质量一言难尽,特别是指针部分看完仍然一头雾水。

但我还是先替谭浩强老师打个不平:在特定历史时期下,谭老师教材确实挺好的,但是现在不推荐了!

在国内优秀C语言教材还比较缺乏的情况下,谭老师的C语言教程,一直作为C语言教材的经典,这是完全没问题的!

我记得B站教C语言的郝斌老师,也推荐谭老师的教材。

毋庸置疑,这是一本经典好书,被称为C语言圣经。本书作者是C语言之父DennisM.Ritchie和著名计算机科学家BrianW.Kernighan合著的一本介绍C语言的权威经典著作。

书很薄,短短两百多页,从helloworld开始讲起,在短小的篇幅里,手把手教你写了stdio.hstdlib.hstring.h当中大部分例程,实现了二分查找、快速排序、二叉树、哈希表这些重要的数据结构和算法。

但是,我要说但是,神书虽好,不适合初学者作为C语言入门图书,否则你会被劝退的。当你看完前面推荐的入门书籍,编写过一定量的代码,再来看这本书,一定会有醍醐灌顶,豁然开朗的感觉。所以我建议你先购买收藏起来,等入门之后再来看,效果更佳!

这本书是C语言入门的经典教材,内容很全面,循序渐进,非常适合自学,详细讲解了C语言的基本概念和编程技巧,由于内容全面书比较厚,需要一定的耐心来仔细品读。

全书共17章。

计算机小白如果要自学c语言的话,可以尝试先把浙大翁恺老师的C语言程序设计视频课学完,视屏课程重点更为突出,再来自学《CprimerPlus》这本书(内容虽多但对看书自学非常友好),两者相得益彰,先后学完后真是美妙至极!

畅销38年了图书,就像引路人一样引导着C语言初学者。从1984年至今,已经升级到了第6版,书中大量完整的、可运行的程序及详细的注释有助于理解代码和概念。

与市面上其他的教程书籍相比,最大的特点就是读起来不会有枯涩烦躁之感。书中新出现的每一个术语,符号,都给出贴近读者目前知识储备的和理解能力的解释。而且,这本书在编排上也十分与众不同,在每个知识点后面都会附带一个“程序清单”。

这本书通过一种被作者称为「现代方法」的方式来来介绍C语言,书中强调标准C、强调软件工程,不再强调“手工优化”。紧密结合了C99标准,并与C89标准进行对照,补充了C99中的最新特性,这种对比式学习,让读者印象深刻。

本书是为大学本科阶段的C语言课程编写的教材,同时也非常适合作为其他课程的辅助用书。

这本书推荐的人比较少,我看过之后觉得作为入门教材是非常合适的,也推荐给初学C语言的同学们。

这本《明解C语言》是日本的C语言经典教材,最大的特《明解C语言》是日本的C语言经典教材,最大特点点是图文并茂,第三版据说全书有205段代码和220幅图表,示例丰富,生动有趣,非常适合入门学习阅读。

同时这本书是图灵系列丛书,图灵翻译和初版了很多经典的计算机图书,口碑经得起考验。原著在日本广受欢迎,始终位于网上书店C语言著作排行榜首位。

而且内容深度也比较适中,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于C语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰、通俗地进行讲解。

但是,神书虽好,不适合初学者作为C语言入门图书,否则你会被劝退的。当你看完前面推荐的入门书籍,编写过一定量的代码,再来看这本书,一定会有醍醐灌顶,豁然开朗的感觉。

虽然书名是「C和指针」但它涵盖了C语言的全部内容,特别注重指针的讲解,除了头尾的几章,指针的话题几乎是贯穿了全书。

通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。

正是指针使得C语言如此之强大,所以要学习C语言的精髓,就是要精通指针!不应当像java或者pascal那样禁用或者限制指针。当然,设计语言时限制指针也只是一种权衡,牺牲了效率却是使得编程人员更容易保证程序的安全。指针的特点就是高效、灵活。

本书的每一章后面都有“总结”“警告的总结”和“编程提示的总结”三个小节,这个特别好。“总结”是对本章的内容上的回顾,而后面两个是一些经验性的东西,相当宝贵。

第1章只讲解了一个完整的C语言源程序,引出了很多很基础的问题,很好地激发了学习者的兴趣和学习欲望。我觉得这是很好的一种设计。

第2到第5章,讲的是每一门语言都有的一些常规的内容,包括词法、数据类型、语句、操作符和表达式。

第11章是动态内存分配,其实就讲解了malloc、free、calloc、realloc4个函数。

第12章详细讲解了怎么用指针实现链表

第13章是指针特性的一些高级应用,最能体现指针神乎其神的地方就是这里了。

剩下几章是一些杂七杂八的内容,包括预处理器、库函数、几种经典抽象数据类型和运行时环境。

本书更适合有C基础的人看。如ADT、递归、指针和数组的部分,书中所述的思想是国内教材所缺乏的,看完本书,能得到一个正确的C语言观。

这本书的主题是C中的各类细节,平时往往不会注意,比如:1.注释的嵌套性,怎么判断编译器是否允许嵌套注释。2.运算符优先级,结合顺序,编译器贪婪3.assert的实现方法,避免if4.少敲一个分号导致各种血案5.注意函数、if等的作用域。6.注意字符集,防止移植性问题7.变长参数,stdargs

书中列举的C语言的细节,至少能够帮助你减少C代码和初级C++代码中90%的Bug,可以帮助我们避免C语言开发的陷阱和障碍。

虽然名字叫《C陷阱与缺陷》,但本质上说的不是C语言的缺陷,而是编程者容易犯的错误。全文的语言很有意思,丝毫没有说教的感觉,举的例子很简单却一针见血,可以作为手边的读物,没事经常翻翻加深印象。

这本书展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。

全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。如果你是C语言程序员,这本书很值得一读。

另外还讲述了C语言发展过程中的一些轶事,作者行文比较随性,如果你爱听八卦可以去看看这些有趣的小故事,另外,书中对C语言中数组和指针这两个常用语法,进行了深入的剖析。

初学C语言不建议一上来就啃书,建议从优质视屏公开课入门,视屏教程相比文本,更容易理解的学习途径。

如果你在学校的C语言课听不懂,看书太枯燥看不进去,这都没关系。现在网上大把的高质量学习资源,只要你去找肯定能找的到,资源收集能力也是一种学习能力。

C语言入门视屏课程,推荐翁凯老师和郝斌老师的视屏公开课资源。

CS50其实不是C语言入门课,它是哈佛大学的一门计算科学导论课程,内容包括基本的计算机知识以及基础算法,常见的编程语言等等,还会探讨最新的计算机科学领域的成果,课程发散性思维强。CS50课程的讲课形式让人耳目一新,真正做到了“快乐学习”。

柠檬哥为什么推荐学习C语言先学这门课程呢?

国内的大学大部分一上来就讲C语言,很少有这样一门计算机导论课程。这门课是用C语言作为教学语言的,但不会深入的讲解C语法,只是用C语言来表达一种编程思维,更重要的是培养计算机思想,对计算机科学有宏观的了解,这对以后任何一门计算机专业课程(包括C语言)的学习都是大有裨益的!

这门从算法、程序设计开始,讲到游戏和网页制作,课程列表是这样的:

【第1集】算法,程序设计,语言等译

【第2集】算法,数据存储,磁盘,程序设计等译

【第3集】C语言,源代码,编译器(1)译

【第4集】C语言,源代码,编译器(2)译

【第5集】函数,全局变量,参数,返回值译

【第6集】参数,返回值译

【第7集】线性搜索,二进制搜索译

【第8集】符号,递归,冒泡排序译

【第9集】归并排序,动态内存分配,堆和栈译

【第10集】CS50函数库,指针,文件输入输出译

【第11集】数独、计算机史上最有名的bug译

【第12集】魂斗罗游戏,如何分配内存译

【第14集】用户体验,数组与指针,Hash函数译

【第15集】网络编程,HTML语言,编写网页译

【第16集】网络安全,窃取通讯的工具,动态网络译

【第17集】垃圾邮件的骗局,屏幕抓取的原理译

【第18集】网页网站开发译

【第19集】互联网工作原理,网页游戏制作译

【第20集】总结与知识问答译

中国大学慕课网有很多高质量C语言课程,其中最推荐浙大翁凯老师的《C语言程序设计入门课》,翁凯老师的C语言入门课YYDS,非常适合C语言入门,老师讲解透彻、声音好听,而且特别注重细节。上过这门课的同学都说好,课程好评如潮!

课程我从头到尾听过两遍,第一遍是学习,第二遍是享受。两个字评价:透彻。

建议和C语言入门部分推荐的图书搭配使用,效果更佳!

这门课是14年开的,翁凯老师讲课风趣幽默,课程深入浅出,每节课程之后都有程序清单,还在课堂介绍了一个可以做小游戏的图形库ACLLib,让你的C语言学习不再只有黑乎乎的命令行窗口。

这门课程是C语言基础学习版,翁凯老师还有一门《C语言程序设计进阶》公开课,同样可以在慕课网在线学习,进阶课程的质量也得到了同学们的广泛好评,推荐在完成基础内容学习之后,可以继续跟着老师学习C语言程序设计进阶,内容涉及指针、文件、结构类型等C语言进阶主题。

郝斌老师的自学入门C语言教程,很多早几年入门C语言的同学应该都知道,教程是09年左右录制,虽然是有些年份了,但C语言自1972年从贝尔实验室诞生以来,基础语法几乎没有变动,所以你完全可以放心去看。

郝斌老师讲课时说,自己是完全的自学C语言,因此更懂初学者的需求。从自学者的角度带大家学C语言,讲解非常认真仔细,是非常基础的的C语言入门教程,适合完全零基础的同学入门,毕竟过来才懂过来人的需求。

其他的视屏就不太推荐了,准确的说只要你认真学完以上视屏公开课,基本算是已经入门C语言。

完成C语言入门书籍和视频教程同时,需要看进阶教材深入学习+项目练习来消化所学内容,达到对知识的内化吸收。整理了21个C语言练手项目,从基础语法开始,逐步深入,通过一个个练手项目,让你轻松驰骋在C语言的快车道。不走弯路就是捷径!

引入大量的C语言程序案例,把算法和语法结合起来,通过引导大家由浅入深地编写C程序,让大家掌握C语言。将从中学会C语言语法、数组、模块化程序设计指针、文件的输入与输出等。

通过本项目的学习,可以让学员掌握一些棋牌类的手机游戏中的发牌系统算法怎么编写,为学员就业后编写一些小的游戏类APP打下良好的基础。

本次课程将使用C语言完成一个简单的日历功能。输入相应的年/月即可看到当月的日历。因此,您需要对C语言有一定的了解。

使用C语言多线程模型实现了排序算法。本项目在Linux环境下使用C语言多线程模型实现了排序算法,通过该项目的学习,可以理解并实践Linux环境的编程基础及多线程模型。

通过3个C语言编程实例,让你在利用递归解决实际问题的过程中学习递归并掌握其核心思想。

递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。本课程通过3个C语言编程实例,让你在利用递归解决实际问题的过程中学习递归并掌握其核心思想。举一反三,懂得如何使用递归解决其他实际问题

地址:www./courses/749

地址:www./courses/737

使用C语言完成一个简单的通讯录。会涉及到结构体、数组、链表等重要概念。

用C语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的所有数学知识都很简单,但输入过程会增加复杂性。都是C语言很基础的东西(输入输出),学了之后能写出一个完整的C语言程序。适合涉及C语言的基本语法,与输入与输出。适合初学者学习。

通过C语言实现一个简易计算器,用于解决任意长度的有符号整数的加、减、乘、除运算。主要将涉及到利用全新的数据结构来表示大数,并将新数据结构存储的大数转化为字符用于显示。以及基于大数新的数据结构完成加、减、乘、除的计算算法设计。

使用C语言实现一个Web服务器。将会学习C语言网络开发,epollIO复用机制,熟悉Linux下的C语言程序编译方法,Makefile编写等技能。

更加深入的理解套接字编程模型,并且了解应用层协议(FTP)如何在套接字基础上定义。本项目实现了支持list,get,quit等命令的FTP服务器。

通过C语言实现Linuxwho命令项目的学习,可以掌握Linux操作系统为上层提供的访问系统数据文件的接口。更好的理解Linux操作系统工作的原理。

带领你学习用C语言实现ping命令。通过本项目中你可以更深入地理解TCP/IP协议,套接字编程,掌握C语言进行网络编程的技巧方法。

使用C语言来实现一个字符版FlappyBird,感受不一样的风采。本课程学习后将会熟悉C语言,以及绘图库ncurses的使用。本课程适合有C语言基础,想做练手项目的同学,可以有效的学习ncurses绘图库的使用,做一些有趣的事情。

地址:C语言实现FlappyBird游戏

将在Linux平台使用C语言编程,在终端界面上玩贪吃蛇。本课程分为三个实验,实验一介绍了图像库,实验二绘制游戏图像界面,实验三实现贪吃蛇。逐步为同学们讲解一个游戏的制作过程。

:用最简单的代码来实现五子棋游戏,帮助大家复习基础知识,学习了如何设计并实现一个五子棋游戏,巩固大家的基础知识。涉及到C语言的基础逻辑判断,程序设计与编写。

地址:www./courses/313

2048是之前十分火爆的一款益智游戏。将使用C语言完成一个2048游戏。适合对C语言有一定基础,想做项目练手的同学,本课程学习后将会了解C语言,以及绘图库ncurses的实用。

THE END
1.算法算法基础入门(进入算法的世界)算法入门【算法】算法基础入门(进入算法的世界) 本文介绍了算法的基础概念,包括分治法、递归法、贪心法、动态规划法、迭代法、枚举法和回溯法,通过实例演示了这些算法在编程中的应用,强调算法思维的重要性。 摘要由CSDN通过智能技术生成 目录 引言 正文 算法的定义https://blog.csdn.net/2301_79784865/article/details/135107433
2.2021年计算机数据结构与算法[1]知识点第一章:数据结构与算法 1.1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: https://xue.baidu.com/okam/pages/strategy-tp/index?strategyId=137041646971828&source=natural
3.《Python编程入门与算法进阶》(中国电子学会)简介书评Python青少年等级考试程序软件开发教程编程入门,py基础能力训练,电子学会青少年编程考试指定用书,让孩子们轻松学习Python! 作者:中国电子学会出版社:人民邮电出版社出版时间:2022年04月 手机专享价 ¥ 当当价降价通知 ¥99.00 定价 ¥99.00 配送至 北京市东城区 http://product.dangdang.com/29382153.html
4.图形化编程入门与算法进阶.pptx读书笔记图形化编程入门与算法进阶01思维导图精彩摘录目录分析内容摘要阅读感受作者简介目录0305020406思维导图算法入门编程读者进阶编程图形算法通过深入掌握探索可以理解实践能力各种帮助入门本书关键字分析思维导图内容摘要内容摘要《图形化编程入门与算法进阶》是一本引领读者从零基础开始,逐步深入探索图形化编程与算法的书籍https://m.renrendoc.com/paper/305663231.html
5.算法入门基础知识算法效率的度量方法 事后统计方法 这种方法主要是通过设计好的测试程序和数据, 利用计算机计时器对不同算方法编制的程序运行时间进行比较,从而确定算法效率的高低 缺陷: 必须一句算法事先编制好程序 时间的比较依赖计算机及硬件和软件等环境因素,有时会掩盖算法本身的优劣 https://www.jianshu.com/p/2283d8f93a18
6.算法设计与分析基础(第3版)[AnanyLevitin著]中文pdf扫描版[20MB算法设计与分析基础(第3版)在讲述算法设计技术时采用了新的分类方法,在讨论分析方法时条分缕析,形成了连贯有序、耳目一新的风格。为便于学生掌握,本书涵盖算法入门课程的全部内容,更注重对概念(而非形式)的理解。书中通过一些流行的谜题来激发学生的兴趣,帮助他们加强和提高解决算法问题的能力。每章小结、习题提示和https://www.jb51.net/books/582016.html
7.终于学完国内算法第一人10年经验总结的数据结构与算法详解文档数据结构主要研究数据的逻辑结构和存储结构,以及对数据的各种操作,是深入学习算法设计与分析、操作系统、编译原理、软件工程等的重要基础。随着计算机应用领域的不断扩展,非数值计算问题已成为计算机应用领域处理的主要问题之一,简单的数据结构已经不能满足需要,无论是系统软件设计还是应用软件设计,均涉及复杂的数据结构处理https://zhuanlan.zhihu.com/p/507739650
8.程序员应该知道的十个基础算法腾讯云开发者社区程序员应该知道的十个基础算法 作为一名程序员,掌握各种算法可以帮助我们解决各种复杂的问题,提高代码的效率和性能,同时也是面试中常被考察的重要内容之一。无论是开发新的软件应用、优化现有的算法逻辑还是解决各类计算问题,算法都是不可或缺的工具。因此,程序员必须掌握一系列常用的算法,以确保能够高效地编写出稳定、https://cloud.tencent.com/developer/article/2352039
9.ACM算法竞赛入门——算法竞赛赛制题目形式常见评测状态xcx:学完C++基础语法之后,已经迫不及待的打比赛了,算法竞赛到底是什么? shy:别着急,今天我们来好好讲一讲算法竞赛赛制,题目形式和评测状态。 一、算法竞赛赛制 1. ACM赛制 ACM只有正确和错误两种结果,即使部分测试点通过仍显示答案错误。ACM赛制必须通过所有的测试点才算通过,虽然可以看到程序的运行结果,但无法了解https://m.nowcoder.com/discuss/596748280822808576
10.算法刷题的基础(一)——必会的算法基础知识Daisir算法刷题的基础(一)——必会的算法基础知识 一、应对算法刷题网站的输入要求 1.不知道输入什么时候结束怎么办? 比如: PAT 1002:读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 你根本不知道输入的正整数有多长,你该怎么办?https://www.cnblogs.com/dokidai/p/15243293.html
11.科学网—如何高效入门数据科学?《如何用Python做情感分析?》这篇文章,分别从英文和中文两个案例,分别采用不同的软件包,针对性地解决应用需求。 你只需要几行代码,就能让Python告诉你情感的取向。是不是很厉害? 有了情感分析做基础,你可以尝试增加维度,对更大体量的数据做分析。 增加时间维度,就可以持续分析变化的舆情。 https://wap.sciencenet.cn/blog-377709-1113955.html
12.课程:《算法竞赛宝典》语言及算法入门(公开课程)六级题库 七级题库 八级题库 九级题库 十级题库 培训课程 语言与算法入门 基础算法艺术 基础数据结构 数学与程序设计 普及组初赛指导 提高组初赛指导 普及组复赛指导 提高组复赛指导页面路径 首页 / ? 课程 / ? 信息学奥赛培训课程 / ? 语言及算法入门 《算法竞赛宝典》语言及算法入门(公开课程)主题http://razxhoi.21cnjy.net/course/view.php?id=8
13.Dotcpp编程(C语言网)编程入门学习训练题库C语言网(Dotcpp编程),老牌的编程入门学习平台,不仅仅提供C语言、C++、Java、Python、编译器(编程软件)等技术的教程资源和工具,还提供包括计算机二级、蓝桥杯真题在内的编程题库,让初学者学练同步,真正学会编程!https://www.dotcpp.com/
14.算法入门:从零开始学习算法的简单教程本文介绍了算法入门的基础知识,包括算法的基本概念、重要性及其应用领域。文章详细解释了如何描述和分析算法,并列举了常见的算法类型及其应用场景,适合希望从零开始学习算法的读者。 算法入门:从零开始学习算法的简单教程 算法基础概念介绍 什么是算法 算法是一组定义明确的指令,用于解决特定问题或完成特定任务。算法可https://www.imooc.com/article/357937
15.九章算法21周掌握初阶算法到高阶算法面试题,适合不同基础,不同专业的系统性面试算法课程,123课时和600+练习题,层次递 进的破解面试算法。 视频+互动 面向对象设计OOD 2025版 10个应用实例+9高频面试真题+7个设计案例,活用5C解题法让你轻松应对各种面试难题 视频+互动 https://www.jiuzhang.com/
16.清华大学出版社图书详情本书是算法竞赛的入门和进阶教材,包括算法思路、模板代码、知识体系、赛事相关等内容。本书把竞赛常用的知识点和竞赛题结合起来,讲解清晰、透彻,帮助初学者建立自信心,快速从实际问题入手,模仿经典代码解决问题,进入中级学习阶段。全书分为12章,覆盖了目前算法竞赛中的主要内容,包括算法竞赛概述、算法复杂度、STL和基本http://www.tup.tsinghua.edu.cn/booksCenter/book_08163901.html