C到C++的细节改变,从C到C++的过渡

C++继承了所有C特性
C++在C的基础上提供了更多的语法和特性
C++的设计目标是运行效率与开发效率的统一
一、register关键字
1、在C++中依然兼容C中的register关键字
2、区别
C语言中无法获取register变量的地址
C++中可以获取register变量的地址
C++编译器发现对register关键字所修饰的变量取地址时,register对变量的作用实际上失效
二、重复定义多个同名全局变量
1、C语言中可以,实际上用的是一块地址空间
2、C++中不可以
三、struct关键字
1、C语言中struct定义了一组变量的集合,而不是一种新的类型
2、C++中的struct定义了一种新的类型
四、函数的返回值和参数
1、C语言中不写参数时,函数接收任意类型的参数,C++则不接收任何参数
2、C++可以不写返回值,默认为int类型,C++必须显式写出函数的返回值
五、变量的定义位置
1、C语言中的变量都必须在作用域开始定义
2、C++中的变量需要使用时再定义即可
六、const关键字
1、C语言中的const
(1)修饰只读变量
(2)修饰的局部变量在上分配空间
(3)修饰的全局变量在只读存储区分配空间
(4)只在编译期起作用
总结:const修饰的变量不是真正的常量,只是告诉编译器不能作为左值使用。
2、C++中的const
(1)const声明的变量放入符号表中称为真正的常量,类似于宏定义(区别在于编译器对const常量进行类型和作用域的检查,而宏定义只是简单的替换,容易造成bug),一般情况下不分配存储空间
(2)对const常量使用extern和&操作符时可能为常量分配存储空间,但不会使用空间中的值
七、三目运算符
1、C语言中的三目运算符返回的是变量的(不能作为左值使用)
2、C++中返回的是变量时,返回的是变量的引用(可以作为左值使用)
返回的是常量时,返回的是(此时不能作为左值使用)

int var_1 = 1;
int var_2 = 2;

(var_1 < var_2 ? var_1 : var_2) = 0;  //可以
(var_1 < var_2 ? 0 : var_2) = 1;      //error

参考:狄泰软件学院<<C++深度解析>>课程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值