工作多年,早已经不会纠结在这个问题上。这个提出是针对一些初学者和刚出道的毕业生。其实入门者是不必管这个问题的,因为这个并不会影响你的职业生涯,无论你选择C还是C++,最后的结果就是你必然C和C++都要会,而且都会接触到。
首先从名称上也可以看出,c++比c多了++,说明c++包含C;为什么不叫c+而叫c++呢,是因为c++比c来说扩充太多了,所以就在c后面放上两个+;于是就成了c++。
其次从机制上:c是面向过程的(也可面向对象);c++是面向对象,提供了类。这是大都数人面对提问会迅速蹦出来的一句话,但是很多人并不会深扒。c++编写面向对象的程序比c容易。C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计,所以C++的封装,继承,多态,抽象这些特性得天独厚的支撑起人类大部分软件框架。
最后从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式,linux核心大部分是c写的,Python的底层也是linux,Android的底层是linux,mac的底层是unix,所以这些的核心全是C语言写的。因为它是系统软件,效率要求极高,所以C的职业大都是系统工程师,嵌入式工程师,大都偏向于底层;而c++适合更上层的,复杂的协议和逻辑业务,所以C++大部分都是开发游戏,客户端和服务端工程师。
除此之外,C和C++的语法层面上,有很多差异,比如两者结构体,类,以及内存分配这些问题上,还有很多的不同。因为C大都是依赖头文件和库的,而C++则是要求你有好的面相对象封装,熟练每个技巧手法。