如何学习C/C++?成为一名优秀的C/C++程序员

一、C/C++语言

如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进。C语言的书可以先买一本 C primer plus,把书中的一些例子都通过键盘敲到编译工具里面去,然后单步执行,逐行调试去看各个变量的值。或者自行添加一些printf语句去输出变量的值。这样当你看完一本书后, 你就有编写小程序的感觉了。

记住,千万不要偷懒,不敲代码,自以为聪明, 能看懂, 或者直接从网上复制。偷懒的代价是会花费更多的时间学习,最后还没有学会,给自己的自信心造成巨大打击,再也不想学程序了。

在学习C/C++或者想要学习C/C++可以加QQ群:389318488,群内有学习资源

C语言看完一本书后,下来你就可以买一本C++的书看了。《C++ Primer plus》这样的好书,因为太厚了,怕你没有信心能够看完。如果确实没有信心的话, C++的书可以先买一本300页以内的书看一看。《C++ Primer plus》这种经典的厚的好书, 可以作为资料直接查阅,有时间的时候可以慢慢看。

还是要提醒各位,一定要把书中的例子挨个敲到电脑里面, 单步执行。一定不要从网上复制, 一定要单步执行。

经过两本书的磨练, 估计你对C/C++肯定有比较深入的了解了, 下来应该可以进入实战了。

二、带界面的应用程序

学会了C/C++语言本身,可能还没有什么成就感,毕竟都是控制台的程序, 老是输出一串字符串, 整天面对各黑框框,成就感估计不是那么爽。要是能搞个带UI界面的程序就爽了。

下来就看个人的志向了, 如果走微软路线, 那你下来学MFC好了,如果要走开源路线, 那开源跨平台的界面库多得是。

通用的并且简单的就是Wxwidget了, 官方网站为 www.wxwidgets.org/。你下载后看具体的例子, 把里面的例子程序敲到你的编译工具里面,去调试,看运行的结果,你也可以试着去修改例子,添加按钮,响应按钮事件等。

在学习C/C++或者想要学习C/C++可以加QQ群:389318488,群内有学习资源

走到这一步, 恭喜你,可以照葫芦画瓢的搞个小应用程序了, 还带界面。

三、网络应用程序

语言搞懂了,UI程序也会了, 下来该学学网络咯, 现在那个程序不需要联网啊,懂网络对你理解很多程序非常有帮助。但是网络应用程序从哪里入手呢 ?

在学习C/C++或者想要学习C/C++可以加QQ群:389318488,群内有学习资源

我来告诉你,从《UNIX网络编程》这本书入手吧,这本书可以教会你网络套接字的底层原理,把上面的例子好好学习,自己动手写一个回应服务器。写一个服务器端,再写一个客户端。服务器端请务必学会 select 这个简单的多路复用模型,这样你才能慢慢的深入里面 poll,epoll ,IOCP 之类的模型。

四、文件操作

所有的程序,基本都会用到文件的读写操作,windows系统有自己的文件操作API, 比如CreateFile, DeleteFile 等,请新手不要学windows的文件操作API, 新手请学标准C语言的文件操作函数,简单易学还跨平台。

就那么几个函数,三下五除二你也就学会了, fopen, fclose, fread , fwrite, fseek, ftell 就这么几个而已。

五、深刻理解内存与指针的关系

作为一个C/C++程序员, 从学习程序的头一天开始,就要和内存的分配释放作斗争。你必须理解内存与指针的关系。怎么样才能理解呢,把老九学堂的《零基础学编程系列之C语言》里讲指针的部分来回碾压个十几遍,代码敲个几十遍就算差不多了。

在学习C/C++或者想要学习C/C++可以加QQ群:389318488,群内有学习资源

六、仔细研究Apache源码

学程序非特别是C/C++程序,非3年之功可以出山,三年对一个C/C++程序来说是一个从量变到质变的过程,三年的项目实战经验,可以让你接触到一个完整的应用程序所需要具备的骨架。

但是这个阶段你写的代码,可能充满BUG, 会宕机,运行效率很差,自己回头看看一年前写的代码,可能自己都感觉恶心, 看不下去。没有关系,这种感觉是每一个进步青年都会有的。要提高自己的代码水平, 还是要像高手学习。

你可能要问,公司同事的水平一般, 水平好的人家也不愿意给我讲。没有关系,开源的代码就是你像高手学习的最佳途径,开源代码是高手留下的练功秘诀, 你看了后你会突然感觉茅塞顿开,感觉自己的水平差人家太远了。

Apache里面的很多思想是所有程序都通用的,搞懂了, 很多模块你也可以直接拿来使用。Apache对内存池的使用, 对线程池的使用, 对模块结构的封装,非常具有实际意义。要是你能把Apache的源码吃个透彻,每一个细节都搞明白了为何人家要这么实现,我可以给你说,“恭喜你 , 你离传说中的高手已经不远了。”

七、修炼C++

我上面说的基本都是修炼C的, 要修炼C++, 还得再花3年功夫, 才有可能练成C++高手。C++太博大精深了,其中最复杂的莫过于泛型编程思想,不要以为能写个模板类就认为泛型编程不过如此而已。

修炼C++, 可以从用C++封装的MFC, wxWidget入手, 看高手如何通过C++语言, 封装这样庞大的UI库,里面应用了很多的C++机制, 最典型的就是多态机制, 还有很多的设计模式应用可以研究。

在学习C/C++或者想要学习C/C++可以加QQ群:389318488,群内有学习资源

八、深研设计模式

设计模式是程序设计的灵魂,是通用方法,当你面对一个大型项目的时候,如何设计一个有弹性的系统,是所有系统分析员应该掌握的技能。在设计模式的研究上,要结合实际的项目进行。

上面跟小伙伴们说了那么多方法和步骤,能否坚持按照上面的方法进行学习,是小伙伴是否能够学有所成的关键。不仅仅是C/C++,要做好一件事情学好一样东西的方法有很多,能不能坚持就是关键。

原文地址:https://www.cnblogs.com/junzi11/p/9534266.html

时间: 2024-11-05 11:23:55

如何学习C/C++?成为一名优秀的C/C++程序员的相关文章

书籍推荐丨如何成为一名优秀的 C 语言程序员!

问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏的,以及我是如何学习这种编程语言的.因此,我认为在这篇文章里列出一些有关C语言的最佳读物应该能帮到不少人.如果你知道其它的优秀读物,请给我发邮件或者直接在评论栏中告诉我吧. 糟糕的C读物(不要忽略这一段) 和这一行里大部分人一样,我曾是重度Google搜索使用者.过了一段时间之后,我发现不准确的答案反而对生产力的提高有反效果.这让我有了一种速度上的错觉:答案找的越快,活干的越慢.没有什么网站会比

程序设计基石与实践系列之成为一名Top的C语言程序员

英文出处:Fabien Sanglard -To become a good C programmer 问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏的,以及我是如何学习这种编程语言的.因此,我认为在这篇博文里列出一些有关C语言的最佳读物应该能帮到不少人.如果你知道其它的优秀读物,请给我发邮件或者直接在评论栏中告诉我吧. 问题的解答 我在之前的一篇博文中已经提到过了,目前为止,所有我所编写的商业3D引擎95%都是C89(也称作标准C,或AN

2018年一名合格的web前端程序员应该会哪些技术

有朋友让小编说一说web前端在未来几年的发展趋向,对于这个问题,恕小编无能为力,web前端技术日新月异,更新非常快,谁也不能预料未来会发生些什么 小编也只能说在2018年,react native和jquery 的需求会减弱,ie10以下的兼容性要求显著降低,vr 有可能会归入前端技能树 为诸位总结了一些2018年web前端程序员应该掌握的前端技术,只有掌握了以下技术,才算一名合格的前端程序员 html, css, jQuery三者完全掌握,相信每个公司对于前端程序员都会有此要求,这些也是前端写

Java学习之面向对象(封装、构造函数、this关键字) <好程序员特训营>

<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流! 1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处:  (1)将变化隔离.  (2)便于使用.  (3)提高重用性.  (4)提高安全性. 原则:  (1)将不需要对外提供的内容都隐藏起来.  (2)把属性都隐藏,提供公共方法对其访问. 2.

如何成为一名成功的iOS程序员

编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域.你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识.只是对编程感兴趣还不足以功成名就--众所周知,我们工作起来像疯子. 编程是一个没有极限的职业,所以要成为一个成功的程序员,你必须超越现有已存在的极限.在程序员职业生涯的开始阶段,他们将面临许多挑战,面对困境,他们之中有一些人将会放弃,而只有少数人会坚持到底,并成为这个领域的领头羊. 成为成功程序员的步骤 1.愿意学习新技术 随着技术的不断进步,我们学到和实施的技术会很快地过时.所以,作为一个程

如何成为一名成功的程序员

编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域.你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识.只是对编程感兴趣还不足以功成名就--众所周知,我们工作起来像疯子. 编程是一个没有极限的职业,所以要成为一个成功的程序员,你必须超越现有已存在的极限.在程序员职业生涯的开始阶段,他们将面临许多挑战,面对困境,他们之中有一些人将会放弃,而只有少数人会坚持到底,并成为这个领域的领头羊. 成为成功程序员的步骤 1.愿意学习新技术 随着技术的不断进步,我们学到和实施的技术会很快地过时.所以,作为一个程

一个优秀的.net程序员必须要学会的技能 (转)-----参照学习目标

最近室友闲聊的时候告诉我,他在网上收集了做为一个java程序员必须要会的东西,他觉得自己要有个方向,否则一定会在平平凡凡的工作中,不思进取,最终 浑浑噩噩.真是让我猛然惊醒啊,做为一个底层的程序员,如何才能拼得过出来的大学精英和社会老手?学习一定必不可少.虽然自己有点懒,我先把这些记下,待 日后尽量弄懂. Web/WinForm/通吃,包括ASP.NET,WebService,Remoting,Thread,Serializable,ADO.NET等命名空间 精通UML 精通DesignPatt

“八仙过海各传一招”,八招让你成为一名优秀的程序员!

有很多程序员抱怨道: 写出来的代码很乱怎么办 产品需求不停改怎么办 感觉自己不是在敲代码而是在写bug 工作中的菜鸟常常被这些问题困扰,面对随时可能改变的需求,面对突如其来的bug,心中泛起无数个羊驼,那面对这些问题到底该怎么办? 首先要想解决这些问题 作为程序员的你,必须遵守下面的原则: 有不少程序员为了表现自己的能力连需求文档都不看硬撑着头皮敲代码,可当自己写完程序后发现不能运行这下子彻底傻眼了: 别以为文档没啥好看文档等于客户需求读不懂文档就不知道客户想要什么. 作为一名工作五年的程序员,

10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员

成为一名硅谷的工程师可能是很多中国程序员的梦想.硅谷被公认是目前世界上云集了最多优秀工程师和知名科技公司.创业公司的地方,吸引了全球无数投资者.创业者和工程师的目光.在那里工作的工程师,有着令人羡慕的职业发展前景,薪酬待遇.此外,他们出众的教育背景,扎实的专业能力,创新的思维,专注的敬业精神也成为了其他工程师们学习的标杆. 下面总结的10条建议,来自一些有关编程的网站.社交平台和博客,给出这些建议的人大多数也是工程师(当中包括在硅谷工作的),以及一些专门研究计算机科学的学者.如果你有志成为一名出