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

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

定义全局变量或者静态变量tmp[10]

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

tmp[10] = {1},只有tmp[1]是1,后面都是0

定义局部变量tmp[10]

tmp[10]未初始化,则tmp内容都是随机数

tmp[10] = {0},则tmp内容都是0

tmp[10] = {1},只有tmp[1]是1,后面都是0

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

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

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

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

相关推荐
MATLAB代码顾问5 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
jinanwuhuaguo5 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
笨笨饿5 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
有一个好名字6 小时前
工具即双手 —— 从 Bash 到 Tool Dispatch Map
开发语言·chrome·bash
Lyyaoo.6 小时前
优惠券秒杀业务分析
java·开发语言
爱编码的小八嘎6 小时前
C语言完美演绎9-16
c语言
DevilSeagull7 小时前
MySQL(2) 客户端工具和建库
开发语言·数据库·后端·mysql·服务
MATLAB代码顾问7 小时前
改进遗传算法(IGA)求解作业车间调度问题(JSSP)——附MATLAB代码
开发语言·matlab
syker7 小时前
AIFerric深度学习框架:自研全栈AI基础设施的技术全景
开发语言·c++
她说彩礼65万7 小时前
C语言 文件
linux·服务器·c语言