C/C++中的变量与常量
C/C++中的变量 在定义变量时,C与C++ 有明显的区别。这两种语言都要求变量使用前必须定义,但是C(和许多其他传统过程语言)强制在作用域的开始处就定义所有的变量,以便在编译器创建一个块时,能够给所有的这些变量分配空间。(这个说法已经是老皇历了,现在的编译器即使是不在开始处定义变量也是可以做优化的,所以写C程序时完全可以像C++那样在任何方便的地方定义变量)。在C/C++中变量与函数在内存中是分开存放的。 全局变量 全局变量时在所有函数体的外部定义的,程序的所有部分(甚至其他文件中的代码)都可以使用。全局变量不受作用域的影响,总是可用的(即全局变量的生命期一直到程序的结束)。如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。全局变量会被分配在内存的堆上。 局部变量 局部变量出现在一个作用域内,是局限于一个函数的。局部变量经常被称为自动变量(automatic variable),因为是进入作用域时自动生成,离开作用域时候自动消失。关键字auto可以显示的说明这个问题,但是局部变量默认为auto,所以没有必要声明为auto。局部变量的内存中会被放在栈上。 寄存器变量:是一种局部变量。关键字register告诉编译器“尽可能快地访问这个变量”。加快访问速度取决于实现,但是,正如名字所暗示的那样子