register关键字请求编译器将局部变量存储于寄存器中
在c++中依然支持register关键字
c++编译器有自己的优化方式
c语言中无法获取register变量的地址
c++中可以取得register变量的地址
c++中的register关键字
c++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
早期c语言编译器不会对代码进行优化,因此register变量是一个很好的补充。
在c语言中,重复定义多个同名的全局变量是合法的
在c++中,不允许定义多个同名的全局变量
c语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上。
c++直接拒绝这种二义性的做法!
地址是针对内存来讲的!
struct关键字的加强
c语言中的struct定义了一组变量的集合
c语言中的struct定义的标识符并不是一种新的类型
c++中的struct用于定义一种全新的类型
c++中所有的标识符都必须显示的声明类型
c语言中的默认类型在c++中是不合法的
在c语言中
int f() 表示返回值为int,接受任意参数的函数
f(void)表示返回值为int的无参函数
在c++中
int f()与 int f(void)具有相同的意义
表示返回值为int的无参函数
小结
c++更强调实用性,可以在任意的地方声明变量
c++中的register只是一个兼容的作用
c++编译器能够更好的进行优化
c++中的任意标识符都必须显示的指明类型