全局变量 局部变量

全局变量:

定义在所有函数之外,作用域为从 定义开始到文件结束。当同一工程中的其它多个源文件要使用该全局变量时,需要 extern 声明下再使用。静态存储。

static 全局变量:(包括static 函数)

限制了全局变量的使用范围,尽在定义的 源文件有效。仍为静态存储。


局部变量:

在函数内定义的变量。作用域仅为 从定义开始到定义的block 域结束(如在for循环中定义的局部变量,尽在for 循环内有效)。每次进入block会重新定义该局部变量。为动态存储。

static 局部变量:

改变了局部变量的生命周期。当第一进入所在的block域时,初次定义并初始化。当退出所在的block域时,占用的内存空间并不释放,下次再进入block域会使用上次退出时的值。静态存储。




### 全局变量局部变量的区别 #### 定义位置差异 在函数体内部定义的变量被称为局部变量,而在函数体外部定义的变量则被称作全局变量。这种区分直接影响到它们可以在何处以及如何被访问和修改[^2]。 #### 作用范围对比 - **局部变量**仅限于其所在函数体内可见并可操作;一旦离开该函数,则无法再对其进行任何处理。 - **全局变量**在整个程序范围内均能被识别及调用,即所有函数内均可自由存取这些数据项[^3]。 #### 生命周期特性 - 局部变量随着所属函数执行完毕后立即消失; - 全局变量的存在周期贯穿整个应用程序运行期间直至结束才会释放内存空间[^4]。 #### 访问优先级说明 当存在同名的局部变量全局变量时,在特定区域内会优先考虑使用局部版本的数据对象而不是覆盖掉它来查找相同名称下的另一个实例——这意味着即使两者名字一样,默认情况下也会先尝试定位最近一层内的局部实体作为目标进行读写动作。 ```c #include <stdio.h> // 声明一个全局变量 int globalVar = 10; void func() { int localVar = 20; // 这是一个局部变量 printf("Inside function, local variable value is %d\n", localVar); } int main(){ printf("Global variable before calling function: %d\n",globalVar); func(); // 尝试打印局部变量会导致编译错误因为main中不存在这个局部变量 //printf("%d",localVar); return 0; } ``` 上述代码展示了如何创建和使用全局变量`globalVar`以及局部变量`localVar`。注意到了解何时应该采用哪种类型的变量对于编写清晰高效的代码至关重要。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值