这是一个大家可能会想问的问题,C语言和C++是完全两个编程语言,C++在发明之初也是为了完全兼容C而增加了面向对象的新特性,从名字++可以看得出来,是更”高级“的,C语言是C++的子集。
首先从大的不同上来讲,C语言是结构化的编程语言,是面向过程开发的,定位是写系统、驱动、各种库等等
C++是面向对象开发,工程化、实例化的思想,更多开发应用层的软件、PC程序、系统服务等等
这是两者因为定位和本质不同而引起的最大的不同
其次而除去以上所讲的两种语言的本质和定位最大的不同之外,C++可以说和C语言是高度相似的,比如除了有自己的cout和cin的输入输出之外,也完全支持C语言的printf和scanf函数输入输出。为了更好理解,我们给大家列举一些具体的不同,如:C++中有默认函数参数、有函数重载、动态开辟内存用new和delete而不是C语言中的malloc和free,还增加了引用类型、命名空间等等,随着每次C++新标准的发布,所支持的关键词也更多,新的特性也更讲多
因此大家可以通过这两方面去了解两者的区别
那么如何选择学习的语言呢?
若是考虑应用场景,若是内核驱动等系统层的开发,那么毫无疑问必然是C语言,如果是应用软件、甚至系统服务,则可以考虑C++。
若是初学编程,就目前国内大学软件专业的安排来看,初学还是首选C语言,这是咱们国家老一辈教育家、计算机专家深思熟虑之后的安排,必然有它的高瞻远瞩,大家学过几年之后就会明白学C语言的好处以及其中的良苦用心。
最后单说一种情况,关于竞赛,众所周知中学生到大学生参加的Noip、蓝桥杯、ACM等程序设计竞赛,普遍都是支持C/C++/JAVA三种语言,因为C++强大的STL库能力让所有初学者首选C++作为参赛语言,而一股脑的学习C++,这里笔者谈谈自己的看法,首先竞赛中的问题都是不需要面向对象的,也就是无需要类对象这些C++中面向对象的概念,因此很多竞赛类的教材、资料都是只安排C++中不包含面向对象的,这样方便学生减少对语言语法的学习负担,而有更多的时间去学习算法知识.这是没问题的.但在初学的顺序上,笔者还是建议先学习C语言,然后进行适当的刷题训练,让初学者和C语言有所磨合之后,可以再学习C++,学习C++中的输入输出、变量类型等等,这样”从低到高、从弱到强“对于我们感受两种语言的区别,与半个世纪前C++诞生的初衷共鸣,这样更有升华效果.
欢迎各位经历者留下观点~
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程