码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C++】C 语言与 C++ 语言的关系 ( C 语言发展 | C 语言缺陷 | C 语言 + 面向对象 + 高级语言特性 | C++ 语言增加内容 | C 语言与 C++ 语言应用场景 )


    文章目录

    • 一、C 语言发展
    • 二、C 语言缺陷
    • 三、C 语言 + 面向对象 + 高级语言特性
      • 1、C 语言衍生的高级语言
      • 2、C 语言与 C++ 语言关系
      • 3、C++ 语言增加内容
      • 4、C 语言与 C++ 语言应用场景





    一、C 语言发展



    C 语言 被开发之前 并 没有经过 缜密 的 设计 , 而是在 使用过程中 逐渐完善的 ;

    C 语言发展经过如下阶段 :

    • 初始阶段 : 1972年至1978年 , C语言 初步形成 , 主要用于 UNIX 操作系统的开发 ;
    • 发展阶段 : 1978年至1988年 , C语言成为主流的编程语言 , 加入了 stdio.h , stdio.h , stdlib.h , string.h 等标准库 , 功能得到了极大的增强 ;
    • 成熟阶段 : 1988年至1998年 , C语言成熟,推出 C语言标准和规范 , 如 : ISO/IEC 9899 ;
    • 现代阶段 : 1998年至今,C语言 推出 C99 , C11 , C17 等标准 , 以满足新的编程需求 ;




    二、C 语言缺陷



    C 语言有如下缺陷 :

    • C 语言 没有经历过 缜密的 设计过程 , 都是根据需求逐渐完善的 , 出现了很多缺陷和漏洞 ;
    • C 语言 在开发时 , 有很多 " 灰色地带 " , 稍不注意就会产生无法排查的问题 , 如 : 内存的管理 - 分配和释放内存 , 指针操作 - 野指针 , 类型转换时精度损失 , 并发死锁 等问题 ;
    • C 语言 有很多 " 低级语言的特征 " , 如 : 可以直接访问内存 , 没有垃圾回收机制 , 需要手动管理内存 , 可以直接访问硬件 - 读写端口 / 控制中断 ;
    • C 语言 直接 通过 " 指针 " 操作 " 内存 " , 造成了很多不可排查的错误 , 如 : 野指针 ;

    尽管 C 语言有上述缺陷 , 但是 C 语言有一个优势 , 那就是 执行效率 非常高 ;





    三、C 语言 + 面向对象 + 高级语言特性




    1、C 语言衍生的高级语言


    鉴于 上述 面向过程 的 C 语言 的 设计缺陷 ,

    在 C 语言 的基础上 , 引入 面向对象 设计方法 , 同时加入 高级语言特性 , 开发出了 高级面向对象 语言 , 如 :

    • Objective-C , 主要用于 Mac 软件和 iPhone / iPad 软件开发 ;
    • C++ , 用途广泛 , Windows / Linux 都可以使用 C++ 语言 ;

    2、C 语言与 C++ 语言关系


    C 语言 与 C++ 语言 并 不是 竞争关系 ;

    C++ 语言 是 以 C 语言为基础 的 加强版本编程语言 , 可以看作是更好的 C 语言 , 在 C++ 语言 中 , 可以使用 C 语言语法 , 对 C 语言完全兼容 ;

    C++ 语言 包含 C 语言 , 在 C++ 代码中可以使用 C 语言的语法 , 但是在 C 语言中不能使用 C++ 的语法 ;


    3、C++ 语言增加内容


    C++ 语言 在 C 语言基础上 :

    • 增加了 面向对象 支持 ;
    • 进行了 类型加强 ;
    • 进行了 函数加强 ;
    • 增加了 异常处理机制 ;
    • 增加了 STL 特性 ;

    4、C 语言与 C++ 语言应用场景


    C 语言 和 C++ 语言的应用场景 :

    • C语言 应用场景 : 系统软件、操作系统、编译器等 底层系统级应用 ;
    • C++ 语言 应用场景 : 大型应用程序、游戏 等更 高级的应用 ;

    在不同的 需求场景 中 , 选择合适的编程语言 ;

  • 相关阅读:
    CVPR2022 | 无需对齐就能胜任大运动超分的内存增强非局部注意方法
    zookeeper的ZAB协议的原理以及底层源码实现超级详解
    阿里云负载均衡SLB,HTTPS动态网站部署负载均衡,实现高并发流量分发
    基于STM32+铂电阻设计的测温仪
    VM虚拟机创建centos7 64位系统提示此主机不支持64位客户机操作系统,此系统无法运行
    @Embeddable and @ElementCollection 嵌套导致SpringBoot程序无法启动的问题
    数字图像处理(冈萨雷斯)学习笔记
    JavaScript基础 JavaScript第五天 1. 对象
    文件IO操作
    Gradle新手指南
  • 原文地址:https://blog.csdn.net/han1202012/article/details/132335990
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号