【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语言中,如果同名宏的定义完全相同,则没问题。如果定义的内容不同,则报错,或者告警。告警的话,使用时遵循就近原则。

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

相关推荐
沐晓时光5 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
Zwawa8 小时前
C语言函数指针与宏实战:从回调、表驱动菜单到X-Macro,讲透嵌入式代码解耦
c语言·单片机·嵌入式
David猪大卫11 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger11 小时前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
fengci.12 小时前
CTF2MISC中等部分
开发语言·前端·学习
xys_67813 小时前
JavaEE通关手册:初识Java
java·开发语言
安妮细水长流14 小时前
ad7124
c语言·单片机
ShineWinsu14 小时前
对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析
开发语言·c++·qt·gui·客户端·表格·qtablewidget
ShineWinsu16 小时前
对于Qt:QListWidget常见属性以及QListWidgetItem类的解析
开发语言·c++·qt·客户端·列表·qlistwidget·qlistwidgetitem
吴名氏.16 小时前
Java转AI Agent教程(第十二周)检索与切分
java·开发语言·人工智能·ai·ai agent