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

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.xdnf.cn/news/2790.html

相关文章:

  • vs 安装完番茄助手visual assist 后 菜单栏不显示
  • mysql约束
  • Django 缓存框架
  • 同步电路与异步电路
  • 如何在 IntelliJ IDEA 中编写 Speak 程序
  • Spark知识总结
  • 前缀树(Trie)(字典树)
  • C++网络通信大小端原理详解
  • 《系统分析师-第三阶段—总结(六)》
  • 集成电路流片随笔19:full_handshake
  • Web技术与HTTP协议
  • 【linux】一文掌握 Tmux 的各种指令(Tmux备忘清单)
  • mtrace和memleak源码分析
  • 游戏盾与高防CDN的协同防御策略分析
  • element-ui carousel 组件源码分享
  • 深入剖析二叉树家族:二叉树、平衡二叉树、满二叉树与搜索二叉树
  • 系统架构-软件可靠性
  • 【前端】1h 搞定 TypeScript 教程_只说重点
  • RK3576遇到的坑
  • 基于RSSI原理的Wi-Fi定位程序,N个锚点(数量可自适应)、三维空间,轨迹使用CKF进行滤波,附完整的代码,可复制粘贴
  • 将有序数组转换为高度平衡二叉搜索树 | 详解与Java实现
  • 第11章 安全网络架构和组件(二)
  • 《Astro 3.0岛屿架构让内容网站“脱胎换骨”》
  • 基于 Spring Boot 瑞吉外卖系统开发(八)
  • 如何实现Redis和Mysql中数据双写一致性
  • Golang|工厂模式
  • nigx屏蔽无用爬虫
  • 【数据可视化-42】杂货库存数据集可视化分析
  • C 语言函数指针与指针函数详解
  • 轻舟系列FPGA加速卡:大模型分布式训练中的高效协同者