局部变量和全局变量一些变量的说明(C++)
关于全局变量的几点说明如下:
1.使用全局变量的作用是增加函数间数据联系的渠道.
2.建议尽量不要使用全局变量,理由有以下几点:
(1)全局变量在程序的执行过程中一直占用存储单元,程序结束时才释放该空间,而不是仅在需要时才开辟存储单元.
(2)它使得函数的通用性降低了,因为在任何函数中都可以修改该变量
(3)使用全局变量过多,会降低程序的清晰性.在各个函数执行时都有可能改变全局变量的值,程序容易出错,因此要限制使用全局变量.
(4)局部变量与全局变量是在不同位置定义的,它们可以同名,使用规则是局部变量在其作用域内将屏蔽与其同名的全局变量.可以使用 → 作用域运算符"::" ← 访问同名的全局变量.例如:
#include<iostream>
using namespace std;
int i = 5; //全局变量
int main()
{
int i = 10, j = 15;
::i = ::i + 2; //全局变量 i
j = ::i + i;
cout << "::i = " << ::i << endl; //7
cout << "i = " << i << endl; //10
cout << "j = " << j << endl; //17
return 0;
}
在什么时候需要使用局部静态变量呢?
1.需要保留上一次调用函数结束时的值
2.如果初始化后,变量只被引用而不改变其值,则这时用静态局部变量比较方便,以免每次调用都要重新赋值。
3.全局变量,是静态存储类别。静态全局变量,是用static修饰的全局变量,表示所说明的变量仅限于本程序文件内使用,特别是对于多文件构成的程序来说,能有效避免全局变量的重名问题。
寄存器类型变量
寄存器类型变量,是用register修饰的局部变量。使用寄存器类型变脸的目的是将声明的变量存入cpu的寄存器,而不是内存。程序使用改变量时,cpu直接从寄存器取出进行运算,不必再到内存中去存取,从而提高了执行的效率。另外,如果系统寄存器已经被其它数据占据,寄存器变量就会自动转为auto变量。例如“register i,j;”
对寄存器类型变量的说明如下:
1.寄存器类型变量主要作用是作循环变量,存放临时值。
2.静态变量和全局变量不能定义为寄存器变量。
3.有的编译系统把寄存器变量作为自动变量处理,有的编译系统则会限制定义寄存器变量的个数。
在程序中定义寄存器变量对编译系统只是建议性(而不是强制性的)。当今的优化编译系统能够识别使用频繁的变量,自动地将这些变量存放在寄存器当中。
外部变量相关(extern)
外部变量类型,使用extern修饰的全局变量,主要用于下列两种情况;
(1)同一文件中,全局变量定义在前,定义在后。
(2)多文件组成一个程序时,一个源程序文件中定义的全局变量要被其它若干个源程序文件引用时。
上一篇: jQuery的ajax方法——请求数据
下一篇: 变量在 PHP7 内部的实现(一)