C中静态变量和寄存器变量的区别
静态变量
静态变量具有保留其值的属性,即使它们超出了它们的范围! 因此,静态变量在其先前的作用域中保留其先前的值,并且不会在新的作用域中再次初始化。
语法:
static data_type var_name = var_value;
注册变量
寄存器的访问速度比内存快,因此可以使用 register
关键字将 C 程序中最常用的变量放入寄存器中。关键字 register
向编译器提示可以将给定变量放入寄存器中。是否将其放入寄存器是编译器的选择。通常,编译器自己进行优化并将变量放入寄存器中。
语法:
register data_type var_name = var_value;
C中静态变量和寄存器变量的区别:
静态变量 | 寄存器变量 |
---|---|
使用的关键字是—— static 。 |
使用的关键字是—— register 。 |
静态变量可能是内部变量或外部变量,具体取决于声明的位置。 | 寄存器变量在函数内部声明。 |
内部静态变量类似于自动变量或局部变量。而外部静态变量类似于全局变量。 | 寄存器变量类似于自动或局部或内部变量。 |
执行速度比寄存器变量慢。 | 寄存器变量可以更快地执行程序。 |
内部静态变量在特定函数中处于活动状态(可见性),外部静态变量在整个程序中处于活动状态。 | 寄存器变量仅在函数内有效。 |
内部静态变量在函数结束前一直处于活动状态(生命周期),而外部静态变量在整个程序中都处于活动状态。 | 寄存器变量在函数结束之前一直有效。 |
存储在初始化数据段中的静态变量。 | 寄存器变量存储在寄存器中。 |
静态变量存储在数据段的内存中。 | 在寄存器变量中,CPU 本身存储数据并快速访问。 |