C++相对于C的增强

1、C++对全局变量的定义检测能力增强了;
2、C++定义一个变量,可以随用随定义;
3、struct类型增强
c语言的struct定义了一组变量的集合,c编译器并不认为这是一种新的类型;
c++中的struct是一个新类型的定义声明。
4、三目运算符

C语言中,关于三目运算符,不可以作为左值使用,除非使用地址。
在这里插入图片描述

C++中,三目运算符,可以当左值,实际上返回的是引用。
在这里插入图片描述

5、const增强

const 定义常量——意味着只读;

const int a;与int const b;意思相同,代表一个常整型数;

const int *c; c是一个指向常整型数的指针(所指向的内存数据不能被修改,但是本身可以修改)

int * const d;d是常指针(指针变量不能被修改,但是它所指向的内存空间可以被修改)

const int * const e;e是一个指向常整型的常指针(指针和它所指向的内存空间,均不能修改)

在C++中,const修饰的变量,初始时并没有真正划分内存,只是在符号表中建立了一个键值对,只有编译阶段才会替换。类似于define,两者不同的是,define是在预处理阶段。

如,const in a=10;——a并没空间或地址,使用的是常量10替换。

在这里插入图片描述
在这里插入图片描述
那么a没有地址,赋值给p为什么没有报错?

因为,此时a是一个常量10,那么在c++中,如果对一个常量取地址,编译器会临时开辟一
个空间如temp,让这个指针存放这个临时空间的地址。
因此,*p改变的是这个临时空间的数值,并没有修改a。这也是上面最终输出的值的原因。
6、枚举的增强

c语言中枚举的本质就是整型,枚举变量可以用任意整型赋值;
c++中枚举变量,只能用被枚举处理的元素初始化。

在这里插入图片描述

7、C++新增Bool类型关键字
发布了99 篇原创文章 · 获赞 229 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_32642107/article/details/104601787