超详细 C/C++ 学习路线分析:学好 C/C++,走遍天下都不怕
C/C++遍布的领域有后端服务器,移动互联网后端,经典Windows界面开发,移动互联网端界面开发,跨平台界面开发,图形分析,系统架构,应用设计,分布架构,还有现在最为流行的人工智能等一些新的技术领域。所以说:C/C++俨然已成为一门贵族语言,成为了编程界最重要的语言之一。
C/C++在编程语言中的重要性不言而喻,那么,我们如果想要学习C/C++,应该怎么去学习?需要学习一些什么东西呢?
一、C/C++入门阶段
刚入门的时候我们主要是学习培养编程思维和动手能力,深刻理解面向过程和面向对象的思想方法,这对以后的程序员之路非常重要!
所以学习语言更为重要
C语言的学习:
数据类型、变量、内存布局、指针基础;字符串、一维数组、二维数组;一级指针,二级指针,三级指针,N级指针概念,指针数组和数组指针;结构体、文件的使用;动态库的封装和设计;函数指针回调函数。
学习C++语言:
面向对象编程思想;类的封装,构造和析构、静态成员、对象管理;类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;对象动态管理、友元函数、友元类、操作符重载; C++编译器对象管理模型分析;类对象的动态管理(new/delete);友元函数和友元类;运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载);类的继承、多继承及其二义性、虚继承;多态(概念、意义、原理剖析、多态案例);虚函数、纯虚函数、抽象类(面向抽象类编程思想案例);函数模板、类模板,模板的继承。
C++类型转换;C++输入输出流(标准I/O 文件I/O 字符流I/O);C++异常处理(异常机制、异常类型、异常变量、异常层次结构、标准异常库);利用一些IDE开发工具:诸如Windows平台VC系列:VC++6.0(比较古老) ;Visual Studio2013, Visual Studio2015,Visual Studio2017,Visual Studio2019;Mac平台的XCode系列,还有CodeBlock,另附一些高级编辑器Notepad++, EditPlus,UE等一些开发工具的常用设置和一些常见快捷键的使用。
二、C/C++开发进阶
在第二阶段学习的时候,就是比较重要的了,C/C++开发的进阶之路,更是一个让自己找份薪水比较体面的工作的。
C++进阶之STL:
STL = Standard Template Library,即标准模板库。这是提高开发效率的极品工具。通过学习此阶段,应掌握泛型编程技巧,理解容器类在C++语言中的应用模式,以及熟练掌握全部STL类的使用方法。
C++进阶之设计模式:
决定一个项目成败最重要的因素是项目总体的设计,通过本阶段的学习,可掌握面向对象编程中重要的一环,是编码前建模的技巧所在。单例模式;工厂模式;代理模式;迭代模式等,这些都是你要掌握的哦。
C++进阶之数据结构基础:
这是所有编程语言中最应该学习的部分,程序组成的基础之一。顺序存储、链式存储、循环链表;
双向链表、栈(顺序和链式)、队列(顺序和链式);
栈的应用、树基本概念及遍历、二叉树;
排序算法、并归算法、选择、插入、快速、希尔。
以上这些内容你知道吗?
三、C++开发高级
C++进阶之QT开发:
掌握QT类库构架,图形界面开发模型;
掌握QT开发技巧,消息机制,图形处理;
掌握QT网络编程,UDP,TCP使用方式;
掌握QT文件处理方式,序列化;
掌握QT在windows,linux,ios,android不同平台下的移植技术
C++进阶之Windows/Linux网络服务器:
掌握Unix/Linux平台开发方式;
熟练使用系统调用;
熟练Unix/Linux内存管理,进程,线程调度;
掌握MFC界面开发,网络编程;
熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;
掌握同步/异步IO模型在网络编程中的使用方式。
C++进阶之数据库开发:
掌握SQL语言的实用技巧。
Oracle,MySQL数据库的使用方式。
如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,这个时候月薪过万都是小意思了!
这就是所谓的程序员大牛了,当下炙手可热的全栈开发工程师,既晓前端,又通后台。快速定位问题,解决问题对他们来说已是小菜一碟,就是人们常说的神秘大牛,只在公司技术攻关的时候才会才看到他们的身影。
①此阶段软件开发工作所需的知识和技能相对较难,高级软件工程师编码熟练度和规范性需要达到一定要求;
②具备一定的项目能力(包括调试能力、文档编写能力、测试能力等)和综合技术素质(包括对软件生命周期的理解、对设计模式的理解、必备的行业知识和经验等);
③了解主流的后台技术和前后端协作方式,能从全局角度理解项目的整个生命周期。
大家在学习编程的时候会遇到非常多的问题没人帮你解决,迷茫是正常的,不怕学不会就怕不想学,大家可以企鹅搜千人群C/C++编程学习聚集地,每天直播课分享,实战项目教学,学习规范的代码风格,里面有很多大神比较热情的,我也会分享大家一些学习资料和学习视频~
最后献上C/C++的一份修炼体系图,希望对大家有帮助:
如何学习C语言?很容易,C语言从入门到入土,从长发飘飘到秃顶
在未来计算机专业讲又要迎来一批新生小鲜肉!C语言入门到入土,从长发飘飘到秃顶的老铁也越来越多,其中,想自学成才的也占了不少数;想笨鸟先飞的也占有不少数。
传说中的C语言就是那么刺激和高挑战
没有基础的人也可以直接学习,速度会慢一点
C语言上手可能不是很容易,首先你的花费一周时间掌握最基本的内容。(PS:没有基础的人也可以直接学习,速度会慢一点)
- 常用的基本数据类型(int,float,double,char)的使用,必然包含常用的输入和输出函数。
- 程序的三大结构学习:顺序结构,选择结构,循环结构。
- 模块化程序设计的函数了解下
你再花2周学习些:
- 指针
- 结构体
- 文件
此时,有些人就在简历中得意的自称\”会\”C语言了。
但是学到如此程度,在实际编程中会经常遇到挫折,主要源自理解不够深入,仅仅体验了一下C语言语法而已。
随意列举一些新手普遍存在的问题:
- 不了解C语言模块化设计,变量名, 指针概念含混。
- 更换编译器,程序出现怪异的结果。
- 怎样定义和声明C语言全局变量和函数最好?
- 在C语言中,一个结构不能包含指向自己的指针吗?
- 什么是C语言最好的代码布局风格?
- 为什么不能向接受const char **的函数传入char **?
- 用缩写“if(p)”检查空指针是否可靠?
- char *指针指向一些int变量,如何跳过?
- 怎样建立和理解非常复杂的声明?
师傅给我剃个光头
拥有某项技能的程序员的价值,可以用学习技能所需的成本来衡量。你用2周学习达到的这种程度,对于企业就是没有价值的,因为老板可以让一个公司里任意其他语言的程序员经过2-3周的学习就能达到你现在的程度。
C语言的 简洁紧凑、灵活方便。快速开发对项目有价值,但这不是你的价值,是C语言的价值。所以提高自身价值,也就是不让别人轻易追上你。以极低的成本替代你。
你只能快跑,进一步学习,C语言语言层面还需要学习下面一些内容:
- 1.C语言运行机制,编译过程。
- 2.C语言模块化思想。
- 3.深入理解C语言面向过程的设计思路。
- 4.C语言编程思维。
- 5.C语言文件同步操作
上述都是语言层面的,属于内功。实战中当然也需要一些更为具体的外功,训练外功可以从熟悉C语言标准库开始,这些模块能进入标准库说明他们足够好并且在实际项目中足够常用,列举一些极为常用的:
- 1.正则表达式
- 2.Socket网络编程
- 3.读取PE文件操作
- 4.进程内存查询与修改
- 5.常用的数据结构与算法
老板我要换种洗发水
无论练习内功或外功,结合实战都是最好的训练方式和检验手段,可以根据个人情况以及喜好选择,如:
- 网络编程借用第三方网站为跳板做实时信息查询.(例如身份证查询)
- 使用第三方库开发小游戏案列,例如推箱子,扫雷,连连看,消消乐
- 编写小应用,个人词典啊
- 使用C语言做算法题,ACM,还有各种地方的什么杯(飞机杯,罩杯)
- 使用C语言做数学建模或者数学计算
- 使用第三方库做终端模式的播放器
- OpenGL做图形处理
个人建议选择小项目进行实训,有些新手上来就想定一个大目标,做的时候很挫折,往往半途而废。把小东西先实现,然后优化。接下来添加新功能,慢慢迭代把小东西做大。这样在做的时候,每实现一个小功能你都会有成就感,激励继续前进。
可能经过比较漫长的一段时间,你成为了一个熟练的C语言小瘪三,还有些高级话题可以继续学习:
- windows编程
- Linux编程
- Qt框架编程
这些高级话题在开发中经常使用, 它们可以帮你更便利实现功能。
通常自称一个月光速学了会C语言的人基本都不是天才,只是浮躁,目标定的比较低而已,认知局限而已。不要太过急功近利,慢慢玩,精进。
当然啦,自学C语言想拔高精进大多都是困难的
- 没有良师讲解,有些知识点和技术没法消化
- 自身理解力不够,稍微高深一些的就看不懂了
- 还有的……
- 时间不够,自制力也不够
如果你基础比较差,不妨关注视频教程专栏教程《C语言51课视频教程合集片》:
通俗易懂,深入浅出,文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。
图文并茂,通俗易懂《C语言项目视频集锦》
世上唯一不能复制的是时间,唯一不能重演的是人生。该怎么走,过什么样的生活,全凭自己的选择和努力。
我是如何自学C语言的?来自一个菜鸟的学习路!希望诸位同仁共勉
首先,本人也是一个菜鸟,目前依然还在学习,当初在我开始自学C语言的时候,走过了好多弯路,如果你看到这篇文章,希望你不要走我走过的弯路,这也是我写这篇文章的目的,我也不想像老头子一样叨叨叨,哪些要做,哪些不要做,好像自己很牛逼一样。我只是把自己觉得是坑,是弯路的地方,结合自己的看法,复述给你听,希望你有自己的理解。
1. 不停的换教程,我总觉得自己正在学的教程没有把我给讲懂,就认为这教程不行,后来慢慢的深入了之后才发现,教程大体上都是差不多的,并不是教程讲的不好,而是本来应该自己花时间去思考的东西,认为应该是由老师来讲的,所以即使再好的教程,我也觉得不怎么样。还有书,入门的书我买了好几本,到最后真正看的只有一本,就是谭浩强的那本。虽然这本评价不是很高,但是确实是这本书带我入门的。当然也不排除特别差的教程,我当初的入门教程是B站UP,叫做C语言_Plus的,书是谭浩强的《C语言程序设计》。当初自己就应该学完一本书和一套教程,换了那么多书和教程,实在是浪费时间,现在想想,挺后悔的。
2. 下载各式各样的教程,我看见名字牛哄哄的教程就会把它保存到百度云盘里,然后下载到电脑上,典型的教程收集狂,我的电脑硬盘几乎是满的!我电脑里有800G左右的视频教程,每天看着这些个教程,就好像看着满大箱的金元宝,感觉自己好有钱,像 渗透测试,WEB安全,逆向破解看着就叫人热血沸腾,哪里还有兴趣学C语言,恨不得直接上 渗透测试。当然,这是不可能的,万丈高楼平地起,C语言都没学会,谈何这些呢?这些电脑里的教程,让我越来越浮躁!一天我不知哪里来的想法,把电脑里这个阶段没学到的“高深教程”全都给删除了,顿时感觉世界都清净了!专心学基础的,接下来的这段时间,我专心了不少,这些教程给了我莫大的学习计算机的动力,也耗费了不少精力,去胡思乱想,万丈高楼平地起,专注很重要!(对于我保存的一些教程,我拥有的也可以分享给大家,有兴趣的小伙伴可以领取的)
3. 不动手,只用眼睛看,我刚开始学的时候,觉得教程讲的我都听得懂,干嘛还要敲一遍代码?然后到自己写作业的时候,就是各种出错,天花乱坠的错误!!!输入法错了啊,关键字打错了啊,少一个括号啊!崩溃!然后我再也不敢怠慢了,该自己敲一遍的代码,就自己好好打一遍。还是会出错,各式各样的错误,很!过了两个星期左右,我就明显的感觉自己的错误变少,思路也更清晰了!到最后要学完的时候,有一个作业是做一个简易通讯录的程序,一百多行的代码,我敲完顺利编译运行!没有错误,如果我一直偷懒不动手,是不可能达到的。现在想想,编程也是一个不断试错的过程,一开始学的时候,是不断纠正自己的错误,因为开始的程序都是简单的。到后来,程序越来越复杂了,就是找程序的错误,如果自己的错误都没有解决,何谈后面解决程序的错误呢?
4. 一开始我听老师说,编程主要学的是其中的思想,听完自己感觉挺轻松,认为学思想,不就是听听课,没作业吗?所以没有把课后作业当回事。过了几天,继续上课听老师讲,直接听不懂了。后来还是和一个学长交流,他说课后作业很重要,这是一个巩固的过程,将自己的知识用起来,这样就能更好的理解了,这也是一个反馈的过程。反馈非常重要,通过作业,写出一行行的代码,直到顺利运行,是一件很有成就感的事情,更能够激励自己去学习!学长讲的挺有道理的,我也听进去,按照他说的操作了,自己实践证明,写课后题确实是一个很好的巩固和反馈的方法!
自己当初就是不专注,眼高手低,懒,才浪费了那么多时间,现在想想其实也挺可贵的,毕竟是一段难忘的经历,但还是希望看到这篇文章的朋友,别走我走过的坑。
另外如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~
编程学习书籍:
编程学习视频:
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料哦~
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。