C语言虽说经常和C++在一起被大家提起,但可千万不要以为它们是一个东西。现在我们常用的C语言是C89标准,C++是C++99标准的。C89就是在1989年制定的标准,如今最新的是C11和C++11标准。根据不同的标准,它们的功能也会有所不同,但是越新的版本支持的编译器越少,所以本文在讨论的时候使用的C语言标准是C89,C++标准是C++99.我们来介绍C语言和C++中那些不同的地方。

早期并没有”C++“这个名字,而是叫做”带类的C“。

”带类的C“是作为C语言的一个扩展和补充出现的,目的是提高开发效率,如果你有Java Web开发经验,那么你可以将它们的关系与 Java 和 JSP 的关系类比。

这个时期的C++非常粗糙,仅支持简单的面向对象编程,也没有自己的编译器,而是通过一个预处理程序,先将C++代码”翻译“为C语言代码,再通过C语言编译器合成最终的程序。

随着C++的流行,它的语法也越来越强大,已经能够很完善的支持面向对象编程和泛型编程。

但是一直也没有诞生出新的C++编译器,而是对原来C编译器不断扩展,让它支持C++的新特性,所以我们通常称为C/C++编译器,因为它同时支持C和C++,例如 Windows 下的微软编译器(cl.exe),Linux 下的 GCC 编译器。

也就是说,你写的C、C++代码都会通过一个编译器来编译,很难说C++是一门独立的语言,还是对C的扩展。

C++是在C语言的基础上进行的扩展,C++包含了C语言的全部内容。

C++支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。

就面向过程编程而言,C++和C几乎是一样的,所以学习了C语言,也就学习了C++的一半,不需要从头再来。

没有任何编程基础的读者,建议先从C语言学起,不要贪多嚼不烂。等你熟悉了C语言,能编写出上百行的代码,就对编程有些概念了,这个时候再去了解C++究竟在C语言基础上增加了什么,你就站在了一定的高度。

C++和C语言的前世今生,两者有什么血缘关系?相关推荐

  1. GO-2-go语言的前世今生

    Go语言的前世今生 一. 为什么需要一个新的语言 最近十年来,C/C++在计算领域没有很好得到发展,并没有新的系统编程语言出现.对开发程度和系统效率在很多情况下不能兼得.要么执行效率高,但低效的开发和 ...

  2. 开课吧:深入了解C++和C语言的血缘关系

    目前人们在提起C++的时候,会很自然的联想到C语言,为了能够深入了解C++开发相关信息,需要搞清楚C++和C语言的血缘关系. 现在看来,C++和C语言虽然是两门独立的语言,但是它们却有着扯也扯不清的关 ...

  3. 区块链用哪种语言 Java_区块链开发用什么语言呢?区块链与编程语言的关系详解...

    原标题:区块链开发用什么语言呢?区块链与编程语言的关系详解 区块链的概念就随着比特币的大热开始逐渐进入公众视野,比特币的拥有者为了使其创造更高的财富,开始疯狂炒作,因而引发购买比特币大浪潮.然而等到比 ...

  4. 【C语言简介】C语言的前世今生

    C语言的发展历史: 20世纪70年代初,贝尔实验室的Dennis Richie 等人在B语言基础上开发出C语言,最初是作为UNIX的开发语言: 20世纪70年代末,随着微型计算机的发展,C语言开始移植 ...

  5. 理解C语言——从小菜到大神的晋级之路(1)——引言:C语言的前世今生

    第一课的视频链接点这里 C语言是现在应用最为广泛的编程语言之一,也是现在依然流行的编程语言中历史最悠久的一种之一.在目前业界广泛使用的编程语言中,许多 种语言是以C为基础发展而来.在多类大学的工程类专 ...

  6. 再白也能学会的C-C语言的前世今生

    爆竹声中一岁除,春风送暖入屠苏.千门万户曈曈日,总把新桃换旧符.今天在这个日子里,我们回首往昔,既然聊到要学C语言,不得知道C语言是糖在哪里甜的,醋打哪里酸的啊. C语言是在 70 年代初问世的.一九 ...

  7. C专家编程 —— C语言的前世今生

    文章目录 C的史前阶段 C的早期体验 K&R C 和 ANSI C const 类型转换 一个微妙的bug 使用无符号建议 GNU和pragmas pragma指示符 C的史前阶段 UNIX系 ...

  8. C语言的前世今生与后世

    一.起源于ALGOL家族 IAL (ALGOL58)>>ALGOL60>>CPL>>BCPL>>B>>C>>C++>> ...

  9. 第一章:Java语言的前世今生-种族天赋:大谈Java成功之道

    种族天赋:大谈Java成功之道 来源:https://edu.csdn.net/course/play/27274/361053 一.java语言的特点: 1.简单.高效:和C++相比 2.面向对象 ...

最新文章

  1. 《图解HTTP》读书笔记--第7章 确保Web安全的HTTPS
  2. sql语句多个表补齐四位_SQL学习笔记 - CTE通用表表达式和WITH用法
  3. ListView smoothScrollToPosition 定位不准笨方法解决
  4. Android查看真机布局,android-外部存储
  5. 逻辑读、物理读、预读的理解
  6. Oracle存在gap,发现gap及解决
  7. powershell自动化操作AD域、Exchange邮箱系列(1)——powershell 简介
  8. oracle procedure可以执行非常复杂的语句吗,oracle-存储过程(procedure)
  9. linux pbs 安装包,【Linux】单计算机安装PBS系统(Torque)与运维
  10. Chrome电脑免安装多个浏览器版本号共存
  11. excel公式里用html,Excel公式中{}是什么意思?要如何用?
  12. Ubuntu20.04安装,并Linux微信等
  13. MATLAB text legend title 输入减号 minus 符号的做法
  14. Parameter number 2 is not an OUT parameter 问题的解决方法
  15. 计算机网络:IPv6
  16. c++left right 和 setw() 函数的用法Alignment of Code
  17. bzoj 1123: [POI2008]BLO (tarjan求点双+树形DP)
  18. 红石外汇|每日分享:0.667是澳元多头在FOMC会议前的最后一道防线
  19. java oca_OCA - Java Test SE8 1Z0-808
  20. Android 11.0 驱动禁用usb鼠标和usb键盘

热门文章

  1. mysql时区问题解决方案
  2. C# AE 对图层筛选要素后显示/只显示符合条件的要素
  3. Confluence自启动脚本
  4. Samba配置文件常用参数详解-OK
  5. delphi 判断两个时间差是否在一个指定范围内
  6. 如何查看Windows8.1计算机体验指数评分
  7. Configuring SharePoint 2010 and ADFS v2 End to End-摘自网络
  8. 一步一步教你安装Nginx+PHP+Mysql
  9. sip协议的功能及其应用
  10. 数据结构上机实践第13周项目1 - 验证Prim算法的验证