替换高清大图
请点击此处输入图片描述
C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
请点击此处输入图片描述
我是一名写了N年(N > 8)C语言的软件工程师。
希望我的经验能给初学者一些建议或者启发,本文没有涵盖C语言的方方面面,但是对于想入门的初学者来说足够了。另外需要说明的是,我不是大神,真正的大神是开发C语言标准,写标准库,写编译器的那帮人,但我自认为我的C语言掌握的比周围的很多人都要好,所以才敢在这里发言。
想学一门编程语言,不知道学什么才好? 毫无疑问 C 语言啊。
C 语言是整个计算机体系的基础,往下可以操作硬件(不止X86计算机,还有ARM,DSP,单片机等各种微处理器)写Firmware,写驱动、写OS,写编译器,往上可以写 App,并且大部分的计算机书籍里的算法都是C语言描述的。
所以学会了 C 语言,就是掌握了软件领域的必备技能,以后再学其他的比如C++,Java,各种解释性语言、就是小 Case 了。
下图是一个网上流行的程序员“鄙视链”。其实我想说的是,还是有一定道理的,哈哈哈,笑而不语。
替换高清大图
请点击此处输入图片描述
我初学 C 语言是在 2005年大二,那个时候,上课的模式是老师在上面讲,我们在下面听,然后就没有然后了,因为没有电脑练习,我根本就没有机会在课下了解更多的东西。学完了一本书,C 语言是干嘛的我都不知道,那个时候我并不知道 C 语言是用来写软件的,更何况别说软件了,电脑都没怎么见过。
我们当初用的教材名字叫 《VC++ 语言程序设计》,这导致我很长一段时间都没不知道VC++,和 C++, C 的区别,OMG!!
对 C 语言的深入学习是在研究生期间,我认真地从头到尾翻了一遍H.M.Deitel 的那本 C++,有了电脑简直如虎添翼,我有阵子天天在宿舍编程。对了,我是在学习C++的时候,顺带学习(复习)的 C 语言,反正 C++ 的书上总有会 C 的。
这里是我总结的学习 C 语言的几个步骤,其他编程语言基本类似,希望对大家有所帮助。
1. 看书
学习一门编程语言少不了先学习基本语法。
C语言的语法也就是变量,数组、指针、表达式、逻辑操作、函数,宏定义等等。学习这些先买一本入门级书籍,其实大都差不多,最经典的就是谭浩强的那本了,虽然在知乎上没少被人黑,但是毕竟流行了这么多年,总归是有可取之处的,其实作为入门书,你不能指望从它里面得到你想知道的所有东西。
除了基本语法,C 语言另一部分是标准库。
这一点很少被C语言入门书提及,但是你要想写出一个像样的程序的话,标准库必不可少。推荐这本世界级C语言专家编写的《C标准库》。
替换高清大图
请点击此处输入图片描述
2. 写代码练习
要想学好一门编程语言,看书远远不够,一定要把书里的代码搬到电脑里。
相信大多数人都是使用的Widnows,那么就下载安装一个Visual Studio吧,用哪个版本?最新的 VS2017 毋庸置疑。
喜欢 Linux 的朋友,就先下载 Glibc 库,然后安装 gcc, gdb。
好了,有了开发环境,接下来一切变得简单,并且好玩。
试着写一些简单的代码,比如 Hello World,文件读写,数学操作,常用算法,等等。
这是我以前练手时写的
请点击此处输入图片描述
3. 总结心得体会
把你觉得很抽象、难以理解的东西放到 VS 里面进行调试,会有很多发现。我以前电脑里就经常会有一个名字叫 Test 的工程文件夹,哪里有疑惑了,就把代码放进去,一 Debug,全部的疑云就解开了。
比如这样,了解 Struct 内存结构
请点击此处输入图片描述
比如这样,了解 Union 的内存结构
请点击此处输入图片描述
比如这样,了解 指针和数组
请点击此处输入图片描述
然后把这一切,记录在一个 Word 中,这样知识就变成自己的了。
这是我从前总结的一个文档
请点击此处输入图片描述
4. 写个小作品
基本知识掌握的差不多了,试着写个小程序。
看着人生第一个自己开发的程序,会有很多的成就感,并且在写程序的过程中,你的编程能力会有质的飞跃。
我曾经写过一个控制台的五子棋游戏,可惜年代久远,现在已经打不开了。
另外需要说明的是,想在 Windows 上写一个有界面的程序的话,还需要学习Windows API,不过这仿佛是 C 语言之外的东西了,单单学习 C 语言,一个控制台程序就够了。
最后一句话作为总结,想要使自己的编程能力突飞猛进,一定要不断地勤加练习。
请点击此处输入图片描述
请点击此处输入图片描述