C语言变量类型

C语言变量类型

自动变量(automatic variable)、静态变量(static variable)和寄存器变量(register variable)

在C语言中,变量有三种类型:自动变量(automatic variable)、静态变量(static variable)和寄存器变量(register variable),他们大部分地方都是相似的,但是每个都有各自的特性。

自动变量(automatic variable):

这是最常用的变量,声明和初始化格式类似int a = 0;。如果不初始化,它的值是未定义的初始值。每次函数调用的时候,也就是重新进入该变量的作用域的时候,变量会重新初始化。而且自动变量的初始化并不被限定为常数,而是可以包含任何式子——先前定义的值,甚至是调用函数。此外,自动变量的名称可以和外部变量或者函数的名称重复,这时候会隐藏外部变量或者函数(不推荐重复名称来使用,这样会导致混乱或者恶性bug)。

静态变量(static variable):

静态变量和自动变量很像,声明和初始化的格式类似static int a = 0;。如果不初始化,它的值是0。不同之处是它的值是永久存储的,而不会随着函数再次调用而再次初始化;而且静态变量初始化必须是一个常数式。

寄存器变量(register variable):

这种变量一般用于程序中某个变量被重度使用,为了提升性能。声明格式类似register int a;。如果不初始化,它的值是未定义的初始值。而且寄存器变量和自动变量一样,初始化并不被限定为常数,而是可以包含任何式子:先前定义的值,甚至是调用函数。如果使用这种类型的变量,会将变量放入寄存器中,由于存储层级关系,这样会提升性能。但是受限于基础设备限制,只有少数变量能被放入寄存器,放不下全部的。并且需要注意的是:1. register声明只能声明自动变量和函数的参数。2. 编译器可以自由忽略我们标注的register,只将其当作自动变量来处理。3. 无法获取寄存器中变量的地址。4. 寄存器变量的数字和类型的限制取决于机器。

全局变量与静态变量的区别

全局变量和静态变量的区别 全局变量和静态变量之间的主要区别是作用域和生命周期。 全局变量可以在程序的任何位置都访问,而静态变量只有在定义它的函数内可见。 此外,全局变量的生命周期是与程序的生命周期相同,而静态变量的生命周期则是静态变量定义的函数的执行周期。

资料来源:

CSDN

知乎

相关推荐

蓝牙耳机充多长时间电,快速充电与续航时长揭秘
365体育亚洲唯一

蓝牙耳机充多长时间电,快速充电与续航时长揭秘

📅 10-19 👀 820
世界杯历史上的越位进球纪录(揭秘世界杯史上最多越位进球的国家与球员)
如何在 iPhone 或 iPad 上设置个人热点
www.bet3365

如何在 iPhone 或 iPad 上设置个人热点

📅 07-13 👀 9777
揭秘安卓偷拍软件陷阱:下载需谨慎,隐私安全不容忽视!