2.register:关键字请求编译器将局部变量存储于寄存器中C :C语言中的变量都必须在作用域开始的位置定义 C++:C++中所以变量都可以在需要使用的时候在定义 for(int i=1; i<=3; i++) //这是c++中使用时才定义,C语言必须在开始就定义 { for(int j=1; j<=3; j++) { c += i * j; } }
C :C语言中无法获取register的变量地址
C++:C++中可以获得register变量的地址,但C++编译器发现程序需要取register变量的地址是,register对变量的声明变得无效。
register int a = 0;
printf("&a = %p\n", &a); // C++中才可以,C语言中不可
4.struct关键字C :在C语言中,重复定义多个同名全局变量是合法的。 C++:在C++中不允许定义多个同名的全局变量 int g_v; int g_v; //这里定义了两个g_v,在C语言中编译可以通过 int main(int argc, char *argv[])
C :C语言中的struct定义了一组变量的集合;struct定义的标识符不是一个新的类型。
C++:C++中的struct用于定义一个全新的类型C :C语言中支持默认类型 C++:C++中的标识符都必须显示的声明,C语言中的默认类型在C++中是不合法的。
6.思考
int f()与int f(void)有什么区别?
C :int f()的参数为n个,而int f(void)没有参数
C++:int f()和int f(void无区别