首页 > 编程语言 >C语言与C++不得不说的那点事

C语言与C++不得不说的那点事

时间:2023-06-21 12:01:09浏览次数:38  
标签:语言 那点 C++ C语言 学习 算法 程序设计


说到C语言,就不得不说它的继承者——C++语言。众所周知,C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。虽然因为天然的血缘关系,导致两者非常相似,就像父亲与儿子相貌相似一样,但是,父亲和儿子毕竟是两个不同的各自独立的个体,而C语言和C++语言也同样是两种各自独立、各有其特点的程序设计语言。在对硬件资源的操作上,C语言更加直接,而C++语言则相对温和一些。

除了这些语法规则上的差异之外,两者最本质的差别在于所采用的程序设计方法的不同。C语言是一门结构化程序设计语言,正如谭老师所说,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程(通常表现为函数的形式),对输入(或环境条件)进行运算处理得到输出(或实现对过程或者事务的控制);而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的实际问题,这样就可以通过获取对象的状态信息得到输出或实现对过程或事务的控制。

所以C语言与C++语言的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“设计”这个概念已经被融入到C++之中,而单就语言本身而言,在C中更多的是算法的概念。C语言可以说是C++语言的一个自治子集。C语言实现了C++语言中的过程化控制及其他相关功能,而在C++语言中的C(我们可以称之为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等新鲜玩意儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和容器类等等,使之更加符合现代程序设计的需要。


从这些C语言和C++语言的对比来看,C++语言作为C语言的继任者,似乎已经全面超越了C语言,正所谓青出于蓝而胜于蓝。那么我们自然会产生一个疑问,既然C++语言比C语言优秀,为什么我们不直接学习更优秀的C++语言而要学习它的过去时——C语言呢?

毫无疑问,C++是一门优秀的程序设计语言,它吸收了C语言的诸多优点,同时又添加了很多现代程序设计语言的新特性,这也是它为什么能够成为主流的程序设计语言而长期屹立不倒的原因。但是,这个世界上没有万灵丹,任何语言都不是万能的,C++也并不是适合于所有应用场景。在某些方面,C语言有着比C++语言更大的优势。很多C++不能完成的任务,C语言可以轻松完成。例如在NVIDIA CUDA计算系统上,由于操作系统ABI特性的限制以及其特殊架构的执行单元,无法支持C++初始化的任务,最终只实现了C语言,过于复杂的C++最终没有实现。很多嵌入式开发系统,都只是提供了C语言的开发环境而并没有提供C++的开发环境;很多C++语言不愿意干的脏活累活,C语言干起来快活得很。例如某些对性能要求极高的大型系统,诸如搜索引擎算法、银行金融系统等等,只有勤快的C语言能够出色地完成这些任务,而C++因为过于复杂,在这方面就稍逊一筹了。

正是因为C语言兼顾了接近底层与更高性能的特性,同时语言又比C++语言更加简洁,使得它自从上世纪70年代被创建以来,一直都是一门主流的程序设计语言,受到广大程序员的钟爱。而随着当今世界嵌入式开发的发展、大型算法应用,特别是搜索引擎、云计算的兴起,C语言的用武之地不但没有萎缩,反而有逐渐扩展的趋势。所以,如果你有意向这些领域发展,C语言是你的不二之选。


综合起来看,对C语言和C++语言的学习可以相互促进。学好C语言,可以为我们将来进一步地学习C++语言打好基础,而C++语言的学习,也会促进我们对于C语言的理解,从而更好地运用C语言。

标签:语言,那点,C++,C语言,学习,算法,程序设计
From: https://blog.51cto.com/u_15767091/6528091

相关文章

  • 精通c语言中的指针(精通c指针1)
    之前学c语言的时候,指针这一章学的半吊子,似是而非,最近经过学习,对指针有个更加深刻的理解。如果之前学过c指针,并且可以使用指针随心所欲操作内存中的任何数据,那么说明指针学好了,否则就是半吊子。如果之前学过指针,那最好忘记之前学过的所有概念,把指针当做一种新的类型来学习。这种......
  • 全面解读Objective-C语言及Cocoa特性——《Objective-C基础教程》
    媒体评论“这是我读过的最好的一本编程书。我从头到尾逐字逐句地读完了它,可读性真强啊!试问,现在有几本技术书能达到这种程度?”——Amazon读者评论“这本书结构清晰,逻辑性强,风格幽默……借助本书,你可以毫不费力地从一个初学者摇身一变升级为优秀的Objective-C编程人员。”——Ama......
  • 2009第二届C++技术大会即将在上海隆重召开
     2009第二届C++  C++对于现代软件的发展功不可没,特别是在系统软件开发领域,C++扮演着关键的角色。中国作为全球软件产业最具潜力的市场,越来越多的企业认识到了C++及相关系统软件技术在软件产业中举足轻重的作用。 为了推动C++及相关系统软件技术在国内的深度应用......
  • 权威解答495个最常遇到的C语言问题
     该书上市后好评如潮,第一次印刷不到1个月就全部售罄。更多C语言经典图书推荐:《编程精粹:编写高质量C语言代码》     媒体评论:“本书是Summit以及CFAQ在线列表的许多参与者多年心血的结晶,是C语言界最为珍贵的财富之一。我向所有C语言程序员推荐本书。”          ......
  • C++17之std::any
    一般来说,c++是一种具有类型绑定和类型安全性的语言。值对象声明为具有特定类型,该类型定义哪些操作是可能的以及它们的行为方式。值对象不能改变它们的类型。std:any是一种值类型,它能够更改其类型,同时仍然具有类型安全性。也就是说,对象可以保存任意类型的值,但是它们知道当前保存......
  • C++面试八股文:static_cast了解一下?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第20面:面试官:C++中支持哪些类型转换?二师兄:C++支持C风格的类型转换,并在C++11引入新的关键字规范了类型转换。二师兄:C++11引入四种新的类型转换,分别是static_cast、dynamic_cast、const_cast、和reinterpret_cast。二师兄:static_c......
  • C++面试八股文:static_cast了解一下?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第20面:面试官:C++中支持哪些类型转换?二师兄:C++支持C风格的类型转换,并在C++11引入新的关键字规范了类型转换。二师兄:C++11引入四种新的类型转换,分别是static_cast、dynamic_cast、const_cast、和reinterpret_cast。二师兄:static_ca......
  • C++ 智能指针
    unique_ptrunique_ptr为了避免重复释放(doublefree)问题出现,进行拷贝(删除了拷贝构造函数)这样的特性带来的问题是无法进行参数传递(因为参数传递需要拷贝构造函数),有两种解决方法想要解决这个问题,首先需要理解为什么unique_ptr会禁止拷贝,对一个指针进行拷贝......
  • C语言-多文件项目
    简介 一个软件项目往往包含多个源码文件,编译时需要将这些文件一起编译,生成一个可执行文件。假定一个项目有两个源码文件foo.c和bar.c,其中foo.c是主文件,bar.c是库文件。所谓“主文件”,就是包含了main()函数的项目入口文件,里面会引用库文件定义的各种函数。//Filefoo.c#include<......
  • C语言-指针进阶详解(万字解析)
    前言本篇内容主要针对指针的进阶详解,如果不懂指针的含义要自行去看书看视频了解一下。指针指针是个特殊的变量,其功能就是来存放地址,地址唯一标识一块内存空间。指针的大小有两种一种是32位操作系统下的4个字节,一种是64位操作系统的8个字节。同时指针是有类型的,不同的类型决定了指针......