升级版的C语言-->C++

C++相对于C语言不但继承 了C语言的大部分语法功能再次基础上还增强优化了很多的功能,接下来我就一一列举!

1.register关键字功能增强

解释://C语言的register的作用请求编译器将变量放在寄存器里面速度快,但是变量不能取地址

           //C++中对依然支持register,但是变量可以取地址,因为C++编译器有自己的优化方式,当检测当程序有register变量要取地址时对register声明变得无效,因为自己会进    行优化。


2.类型检测增强

//C语言中重复定义多个同名全局变量是合法的

//C++中不允许这种做法


//C++的所有函数变量必须有类型,且C语言的默认类型C++不支持

//C语言检测没有这么严格



3.struct类型增强

//C语言中struct定义了一组变量的集合,但是C编译器并不认为这是一个新的类型

//C++中struct是一种新的类型的定义声明



4.C++新增Bool类型的关键字

//C++bool可取的值只有ture和false,理论上其只占一个字节,这取决与编译器的实现

//ture代表真值,编译器处理为1

//false代表非真,编译器处理为0

//bool只有ture和fslae两个值,在赋值时将非0转换为ture将0转换为false


5.三目运算符
//C语言的三目运算符是个表达式,不能做左值,返回其中的大数或者小数,其运算结果是储存在寄存器中的

//C++的算木运算符可以做左值,因为表达式返回的是变量的本身


C++编译器是如何让三目运算符当左值的呢?

a>b?&a:&b就这么简单就实现了 ,让其返回变量的地址就好了,只不过这些是C++编译器帮我们完成这个取地址的工作了

6.const

//C语言中的const好像是个"假的"const

//C++中的const才是真正的常量

为什么这么说呢?



所以说C语言中的const是假的const

为什么C++通过指针没有改掉变量的值呢?

解释:以上图代码做参考,因为C++编译器在遇见const声明的变量后,将这个变量a放在符号表中,当你要使用变量a的时候就从符号表中将这个变量的值拿出来给你使用,

当你p=(int *)&a的时候,编译器会为a单独在内存中开辟空间,p指向这块空间,这个时候给这块空间赋值为100,无论你赋值成多少,都和符号表中的a的值没有任何关系,所以通过指针没有修改a的值

结论:

C语言中的const变量是只读变量有自己的储存空间;

C++中的const可能分配空间也可能不分配空间

当const修饰的变量为全局变量或者需要在其他文件中引用或者用&符号的时候会开辟空间。

7.const和#define的对比

//const和#define的相同之处:const和#define很相似


不同之处:const由编译器处理的,提供类型的检查和作用域检测;

                    #define由预处理器处理单纯的文本替换



以上所列就是C++在C语言基础的一些性能的提升和之前一些语法关键字的区别!















            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值