c++是以c语言为基础,面向对象支持,类型加强,函数加强,异常处理。
1、在C++中变量可以随时定义。
2、register关键字
在C中,register关键字请求编译器将局部变量存储于寄存器中,C语言中无法获得register变量的地址。
在C++中编译器有自己的优化方式,不使用register也能做优化,并且C++中可以取得register变量的地址。当C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
3、在C语言中,重复定义多个同名的全局变量是合法的,在C++中,不允许定义多个同名的全局变量。
在C语言中,多个同名的全局变量最终会被连接到全局数据区的同一个存储空间上。
4、C++编译器对const常量的处理
a.当碰见常量声明的时候,在符号表中放入该常量
b.编译过程中若发现使用该常量则直接以符号表中的值替换。
c.编译过程中若发现对const常量使用了extern或者&操作符,则给对应的常量分配空间。
注意:C++中可能为const常量分配空间,但是不会使用存储空间的值。
如:const int c = 0;
int *p = (int *)&c;
*p = 3;
printf("c= %d\n", c);
输出结果为0;
而在C语言中,const变量是只读变量,有自己的存储空间,值可以被上面的例子修改。
5、在C语言中,struct是变量的集合, 在C++中,struct是一个新类型,和int,char等类型一样
6、在C++中所有的变量和函数都必须有类型声明,不能默认。
在C语言中,函数f()如果不写成f(void),则可以接收任意多的参数。
int f() 和int f (void) 在c语言中区别很大,而在c++中一样。