当前位置: 首页 > news >正文

C语言高频面试题——局部变量和全局变量可以重名吗?

在C语言中,局部变量全局变量可以重名。当局部变量和全局变量重名时,局部变量会优先于全局变量,这种现象被称为变量作用域的遮蔽(Shadowing)


1. 变量的作用域

  • 全局变量

    • 定义在函数外部,作用域为整个文件(或跨文件,通过 extern 声明)。
    • 生命周期从程序开始到程序结束。
  • 局部变量

    • 定义在函数内部或代码块中,作用域仅限于该函数或代码块。
    • 生命周期从进入作用域开始,到离开作用域结束。

2. 局部变量和全局变量重名时的行为

当局部变量和全局变量重名时,局部变量会遮蔽(Shadow) 全局变量,即在局部变量的作用域内,全局变量不可见。如果需要访问被遮蔽的全局变量,可以通过 :: 或其他方式显式指定(C++ 中支持 ::,但 C 语言不支持)。

示例代码
#include <stdio.h>int x = 10; // 全局变量void func() {int x = 20; // 局部变量,与全局变量重名printf("Inside func: x = %d\n", x); // 输出局部变量的值
}int main() {printf("Global x = %d\n", x); // 输出全局变量的值func();                       // 调用函数return 0;
}
输出结果
Global x = 10
Inside func: x = 20

http://www.dtcms.com/a/161646.html

相关文章:

  • 02《小地图实时》Unity
  • 区块链随学随记
  • 第二章 信息技术发展(2.2 新一代信息技术及应用)
  • PostgreSQL无法查看表中数据问题排查
  • linux 文本三剑客(grep sed awk)
  • 【计算机视觉】三种图像质量评价指标详解:PSNR、SSIM与SAM
  • 升级xcode15 报错Error (Xcode): Cycle inside Runner
  • 赋能航天教育:高校卫星仿真教学实验平台解决方案
  • 说说stack reconciler 和fiber reconciler
  • 安卓基础(强制转换)
  • ArkTS基础实验 (二)
  • 20250428-AI Agent:智能体的演进与未来
  • About why docker application mode taskmanager not down in time
  • 大数据应用开发和项目实战
  • Android Studio 中使用 SQLite 数据库开发完整指南(Kotlin版本)
  • 聊天室系统:多任务版TCP服务端程序开发详细代码解释
  • 机器学习分类模型性能评估:应对类别不平衡的策略与指标
  • ArcGIS arcpy代码工具——根据属性结构表创建shape图层
  • 基于STM32、HAL库的ATSHA204A安全验证及加密芯片驱动程序设计
  • RAG工程-基于LangChain 实现 Advanced RAG(预检索优化)
  • 代码随想录第30天:动态规划3
  • vue3 css模拟语音通话不同语音、正在加载等的效果
  • 《Operating System Concepts》阅读笔记:p821-p897
  • C++——入门基础
  • C++学习笔记(四十二)——STL之堆操作算法
  • 嵌入式程序发开思路
  • IntelliJ IDEA 内存优化
  • 数据中心平台建设方案技术方案(Word)
  • 制作一款打飞机游戏28:编辑器完善鲁棒性
  • 回归预测 | Matlab实现DBO-LightGBM蜣螂算法优化轻量级梯度提升机多输入单输出回归预测,作者:机器学习之心