一、变量的定义
//C语言中的变量都必须在作用域开始的位置定义!!
//C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。
int main() { int i = 0; printf("ddd"); int k; system("pause"); return 0; }
二、register关键字增强
//register关键字 请求编译器让变量a直接放在寄存器里面,速度快
//在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容
//1
register关键字的变化
register关键字请求“编译器”将局部变量存储于寄存器中
C语言中无法取得register变量地址
在C++中依然支持register关键字
C++编译器有自己的优化方式,不使用register也可能做优化
C++中可以取得register变量的地址
//2
C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
//3
早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。
三、函数检测增强
在C语言中,重复定义多个同名的全局变量是合法的
在C++中,不允许定义多个同名的全局变量
C语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上
int g_var;
int g_var = 1;
C++直接拒绝这种二义性的做法。
四、struct类型增强
C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型,
C++中的struct是一个新类型的定义申明
struct Student { char name[100]; int age; };
C语言中只能这样去申明一个结构体变量struct student s1;
C ++中可以直接student s1
五、C++中所有的变量和函数都必须有类型
C语言中这样定义函数是合法的
f(i) { printf("i = %d\n", i); } g() { return 5; }
在C语言中
int f( );表示返回值为int,接受任意参数的函数
int f(void);表示返回值为int的无参函数
但是这样写,在C++中是不允许的。C++更加强调类型,任意的程序元素都必须显示指明类型