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++中枚举变量,只能用被枚举处理的元素初始化。