C++对c的增强和扩展

全局变量检测增强

int c;

int c = 10;

在C下没问题,在C++下不行,因为重定义。

函数检测增强

C语言:返回值,形参类型,参数个数没有检测

但是C++中检测了

类型转换检测增强

char *p = malloc(64)

 

c++下必须一致:

char *p = (char *)malloc(64)

struct 增强

C语言下结构体不能放函数:

C++下结构体可以放函数,可以简化关键字struct

C++可以通过结构体里的函数修改结构体里的变量

bool类型扩展

c语言下没有bool类型

 

c++下有bool类型:

bool会把非0的数转为1来处理。

true 1

false 0

其实也就是一个宏定义

三目运算符的增强

在c++下三目运算符其实返回的是一个变量

 

int a=10,int b=100;
a>b?a:b = 1000;
//b的值会被修改为100

在c语言下三目运算符返回的是一个值

const增强

c语言下const

全局const

在全局定义的const受到常量区的保护,是无法修改的

局部const

可以采用指针的间接修改来处理。

c++下const

全局const

和c语言是一样的,间接和直接修改都不行

局部const

通过间接修改可以编程完成,但是并不能修改

 

在c++中的函数中申明const变量的时候并没有把该变量放到栈中,反而是一种类似与宏定义的符号表,也就是一个键值对,const变量就是具体值