关键字
register
register的作用是请求编译器尽可能将变量保存在CPU的内部寄存器中,这样做的好处是省去了CPU从内存中读取数据的时间,从而提高了程序的运行效率。通常情况下,我们将频繁被访问的变量设置为寄存器变量。使用register关键字要注意一下几点:一、register只能修饰局部变量不能修饰全局变量,因为全局变量可以被多个进程访问,如果设为register变量,只有当前进程知道变量的位置,其他进程都不知道;二、不能用 & 来获得register变量的地址,如果用& ,获得的地址时内存的地址;三、register修饰的变量类型一定要是CPU所能接受的类型。
static
static的作用有三点:一、static修饰局部变量,称为静态局部变量,延长了局部变量的生命周期,使得该变量在整个程序运行结束后再释放;二、static修饰全局变量,称为静态全局变量,只能在本文件中访问,不能再其他文件中访问;三、static修饰函数,称为静态函数,只能在本文件中调用,不能再其他文件中调用;当一个文件中同时出现了非静态函数和静态函数,一定要将静态函数定义在非静态函数之前,或者在非静态函数前先申明静态函数,然后在后面定义静态函数。
另外,静态变量存储在虚拟地址空间的 .data 段,没有初始化时,系统默认初始化为零。
使用static的三种情况:一、当我们希望延长局部变量的生命周期时,用static修饰局部变量;此时静态局部变量的作用与全局变量相同,但静态局部变量比全局变量更加安全;二、当我们想让全局变量只能在本文件中可访问,