C语言与C++的区别

文章目录

  • 前言
  • 语法加强部分
    • 一.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语言,c++,开发语言)