【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 小时前
LikeShop 单商户SaaS商城分销模块二开:佣金计算与结算逻辑实现
java·开发语言·微服务·likeshop·likeshop开源商城·likeshop多商户
Logic1018 小时前
C语言/数据结构位运算题解:异或XOR找出学习计划中的“独特学习时间“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
wuminyu8 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
m0_380743878 小时前
C++中的freopen的用法实例详解
开发语言·c++
Escalating_xu9 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
jimy19 小时前
polymorph.cpp里面的“析构函数、智能指针”问题
开发语言·c++
m0_380743879 小时前
PHP 8.3 缓存清除不生效怎么排查
开发语言·php
朝朝辞暮i10 小时前
C++ 第 6 课:switch —— 多状态选择
开发语言·c++·算法
小凡geo10 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
朝朝辞暮i10 小时前
C++ 第 4 课:if / else —— 让程序自己做决定
开发语言·c++