实用性增强
C语言中变量必须被定义在作用域的开始位置
C++则更强调语言的实用性,所有的变量可以在需要时再进行定义
Register关键字
早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。C语言中register关键字意为将变量放入寄存器当中,而在C语言中,无法取得register的地址,即:
register int a = 0;
//此句报错
printf("&a = %x\n",&a);
而在C++中,对编译器做了优化,即使不使用register关键字,编译器可能会自动进行优化。如:
for(int i = 0;i<10000;++i){
cout<<i<<endl;
}
对于这种大量使用i的循环,c++编译器也会将其放到寄存器上以加快执行速度。
同时,C++中可以取得register变量的地址,但需要注意的是:当取register变量的地址时,register对变量的声明变得无效。
变量检测增强
在C语言中,重复定义多个同名的全局变量是合法的:
int g;
int g = 1;
多个同名的全局变量,最终会被链接到全局数据区的同一个地址空间上去。
而C++拒绝这种二义性的表达。
本文探讨了C和C++在变量处理上的关键差异,包括变量定义位置、register关键字的作用与变化,以及变量检测机制的增强。C++在实用性与安全性方面进行了改进,如允许在任意位置定义变量,优化register变量使用,并拒绝了C语言中可能引起二义性的全局变量重复定义。

被折叠的 条评论
为什么被折叠?



