文章目录

  • 前言
  • 语法加强部分
    • 一.struct关键字加强;
    • 二.声明变量得到加强
    • 三.检测性加强
      • 1.申请寄存器变量并取地址问题
      • 2.重复定义变量问题
      • 3.函数传参问题
    • 四.三目运算符的优化
    • 五.const常量的声明
  • 主要有以下扩充
    • 引入了命名空间;
    • 引入了输入输出流cin、cout;
    • 引入了布尔类型、字符串类型【string】
    • 引入了函数重载;
    • 引入了类与对象;
    • 引入了引用这一概念
  • 总结

前言

对比学习往往会使学习的效率事半功倍。本次进行一下c与c++的对比。可以说c++是c语言的加强扩充版;c++对c语言的一些语法进行了优化;两者在开发之初就有些不同,C语言面向过程,就是你要实现什么就写什么,代码的耦合度很强,C++是一门面向对象的语言,经过代码之间的依赖性没有了那么强,接下来主要从语法上说一下两者的异同。


语法加强部分

一.struct关键字加强;

在c语言中用struct 定义结构体名并不能直接拿结构体名去声明结构体变量
如果想用结构体名直接声明结构体变量就在struct前加上typedef重命名关键字;
在c++中struct得到了加强;
可以定义完结构体类型直接拿结构体名去声明结构体变量;

二.声明变量得到加强

在c语言中只能在区域开始的时候声明变量,并且把变量直接声明完否则不被允许;
c++中随处可以声明变量,可以将变量与函数执行语句时绑定在一起,使程序更有模块化;

三.检测性加强

1.申请寄存器变量并取地址问题

register可以申请将使用频繁的变量放在寄存器中;
寄存器中的变量不可以取地址,内存里面变量可以取地址
寄存器变量申请了不一定会成功,c++优化后编译器一般会判断,怎么合适怎么来
如果是c语言申请将这个变量寄存在寄存器中再取地址就会报错;
c++优化了这一点,如果你对申请的变量取地址他会直接将该变量直接放在内存中
因此取地址也没事;

2.重复定义变量问题

在c语言中可以定义一个变量定义很多次;如果没有值去覆盖
定义地址上的值那么定义的值一直存在;
c++可以及时检测到你定义过这个变量,因此不可以重复定义一个变量;

3.函数传参问题

c语言中如果函数参数列表没有放参数那麽可以将任意类型的参数传进去;
c++优化了这一点;如果没有传参就是空类型;

四.三目运算符的优化

c语言中三目运算符运算之后返回的是一个数值,不可以做为赋值符号的左值:
c++为了提高运算的灵活性将三目运算符优化返回值是成为一个变量,可以作为赋值符号的左值;

五.const常量的声明

c语言中const int a=3仅仅是将a=3放入了常量区如果对其取
地址用指针去修改他的值可以改掉;并且c语言会对这个const 常量分配内存;c++中优化了以上缺点,将a=3直接放入符号表中,将a与3绑定;
如果再用指针修改a的值并不影响他们的绑定关系;
一搬c++中不会对const常量分配内存,只是对其进行绑定;【放入符号表】
有以下两种情况会分配
(1).const 的常量是全局变量
(2).const int &a=10;(常引用);

主要有以下扩充

引入了命名空间;

如果有多个同名的变量可以用using namespace A{a=10}   using namespa B{a=22}限定
在使用时用using namespace A或另一个限定一下;
然后就可以直接对命名空间的变量使用;std是标准命名空间,所以使用时要声明一下;

引入了输入输出流cin、cout;

引入了布尔类型、字符串类型【string】

布尔类型占一个字节,并且返回值类型非0即1:如果不是零返回其他任何值都是1;
char str[10] 属于字符数组。

引入了函数重载;

引入了类与对象;

引入了引用这一概念

在运用引用时不要考虑怎末引用的,知道是对原来的变量起别名就好:

总结

这里是博主在刚刚步入大一的时候学习c++记录的学习笔记,说到的非常浅,C++与C都是超级优秀的编程语言,他们的异同也不仅仅只有这些,还有好的想法请评论区告诉博主。(^_−)☆

C语言与C++的区别相关推荐

  1. c语言exit和return区别,在fork和vfork中使用

    转自c语言exit和return区别,在fork和vfork中使用 exit函数在头文件stdlib.h中. 简述: exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: ...

  2. 脚本语言和编程语言的区别

    脚本语言和编程语言的区别 计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类. 1 . 计算机所能识别的语言只有机器语言,即由0和1构成的代码.但通常人们编程时,不采用机器语 ...

  3. Go语言中*和的区别

    Go语言中*和&的区别 总结 示例 老是分不清*和&的区别,今天特意总结了一下. 1. 总结 &是取地址符. *可以表示一个变量是指针类型,也可以表示指针类型变量所指向的存储单 ...

  4. 计算机语言缺省,揭秘物联网必学语言——C语言与C++的区别

    C语言虽说经常和C++在一起被大家提起,但可千万不要以为它们是一个东西.有很多人会有这样的疑问:C语言和C++有什么区别呢? C++是在C语言的基础上发展来的,但是并不是C++比C语言高级,两者的编程 ...

  5. C语言 全局变量和局部变量区别 - C语言零基础入门教程

    目录 一.全局变量和局部变量简介 1.全局变量简介 2.局部变量简介 二.全局变量和局部变量注意事项 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语 ...

  6. C语言 NULL 和 0 区别 - C语言零基础入门教程

    目录 一.关于 NULL 定义 二.NULL 和 0 区别 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.关于 NULL 定义 NU ...

  7. C语言 const 和 define 区别 - C语言零基础入门教程

    目录 一.const 使用 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数名后面 5.const 修饰函数参数 二.define 使用 ...

  8. C语言 typedef 和 define 区别 - C语言零基础入门教程

    目录 一.typedef 简介 1.typedef 简化复杂的类型声明 A.定义普通变量 B.定义函数指针 C.定义结构体 2.定义与平台无关的类型 二.define 简介 三.typedef 和 d ...

  9. C语言 指针和数组区别 - C语言零基础入门教程

    目录 一.前言 二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小 b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值 b.数组赋值 3.指针是指针变量,数组是指针常量 三 ...

  10. C语言 memcpy和memcpy_s区别 - C语言零基础入门教程

    目录 一.memcpy 和 memcpy_s 函数区别 1.语法对比 memcpy_s 函数语法 memcpy 函数语法 2.memcpy 和 memcpy_s 相同点 3.memcpy 和 memc ...

最新文章

  1. JS基础类型和引用类型
  2. CodeForces-734E Anton and Tree 树的直径
  3. Hadoop教程(三):HDFS、MapReduce、程序入门实践
  4. 用JAVA日志来写诗
  5. Python Demo 02 蒙特卡罗方法输出e
  6. HH SaaS电商系统的供应商系统设计
  7. Kaggle新手银牌:Airbus Ship Detection 卫星图像分割检测
  8. js深拷贝和浅拷贝对数组的影响_JS基础——深拷贝与浅拷贝
  9. 雪碧图PHP,Webpack中雪碧图插件使用详解
  10. ceph存储修改vm密钥(密码)
  11. 软考中级-嵌入式系统设计师
  12. 苹果手机上网速度慢_人群中手机网速不好,怎么办?
  13. (一)线段树入门--补充与其他模板
  14. 鹿狩猎 - 认识到许多因素要记住
  15. ISIS的基本介绍与实验操作
  16. 2021CSDN粉丝年度严选文章TOP10榜单出炉~浅看超人气盘点
  17. 快速学习-cmd命令大全
  18. 元宇宙带来的游戏变革会是怎样的?
  19. 问题—抱怨?人品差?别搞笑了!
  20. HTML知识点(来自广陵散老师)

热门文章

  1. shader!曲面效果的实现
  2. 微信小程序 for循环 array数组操作详解
  3. 51Nod-1414-冰雕
  4. 大学计算机科学的14个知识领域
  5. 腾讯云cos上传文件功能封装
  6. ROS1中使用Python发布和订阅主题
  7. 俩博士相亲,第一反应是查对方发多少SCI,学傻了是一种怎样的体验?
  8. SequoiaDB分布式数据库2022.2月刊
  9. 【进阶】嫌弃Python慢,试试这几个方法?
  10. c语言日历软件下载显示农历的,系统时间显示农历(KClock)