【C】局部变量和全局变量及同名情况

在局部变量作用的块或者函数内,局部变量覆盖全局变量,对变量的操作只是局部变量,不对全局变量起作用。在块或者函数外部,全局变量才有作用。

定义全局变量或者静态变量tmp10

tmp10未初始化或者tmp10 = {0},则tmp内容都是0

tmp10 = {1},只有tmp1是1,后面都是0

定义局部变量tmp10

tmp10未初始化,则tmp内容都是随机数

tmp10 = {0},则tmp内容都是0

tmp10 = {1},只有tmp1是1,后面都是0

|--------|------|------|
| 类型 | 作用域 | 生命周期 |
| 局部变量 | 某个函数 | 某个函数 |
| 静态局部变量 | 某个函数 | 整个工程 |
| 静态全局变量 | 单个文件 | 整个工程 |
| 全局变量 | 整个工程 | 整个工程 |

作用域相同的变量,不能命名相同,会报错。作用域不同的变量,可以命名相同,使用时遵循就近原则。也就是局部变量可以覆盖全局变量。

C语言中,如果同名宏的定义完全相同,则没问题。如果定义的内容不同,则报错,或者告警。告警的话,使用时遵循就近原则。

全局或者静态变量初始化必须是常量表达式,局部变量初始化可以是变量。

相关推荐
我命由我123454 分钟前
Python 开发 - Python 虚拟环境
运维·开发语言·后端·python·http·https·java-ee
c#上位机5 分钟前
C#上位机项目实战——exe项目调试更改dll中源代码
开发语言·c#
basketball6165 分钟前
C++ 中字符串与常见类型的转换总结
开发语言·c++
梦影_6 分钟前
MySQL进阶教程(一)—— 储存过程与触发器(上)
开发语言·数据库·后端·sql·mysql·中间件
云和数据.ChenGuang18 分钟前
LLM大模型对接本地Ollama部署模型
开发语言·人工智能·python·langchain
等我调个Bug31 分钟前
C++智能指针通俗讲解
开发语言·c++
黑化旺仔1 小时前
【OC】Runtime:类元数据、加载初始化与消息派发
开发语言·macos·ios·objective-c
Felven1 小时前
B. Collecting Game
c语言
Felven1 小时前
C. Removing Smallest Multiples
c语言·开发语言
云和数据.ChenGuang1 小时前
光哥说Python 循环导入(Circular Import)深度解析:成因、排查与解决方案
开发语言·前端·人工智能·python·langchain