You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++/C/Python如何访问与局部/类成员同名的全局变量?

问题解答

1. 当前C++代码访问全局变量v的实现

你提供的代码是C代码(包含C特有的类定义语法),要访问被类成员变量、局部变量遮蔽的全局v,使用**全局作用域解析运算符::**即可,修改printv函数内的输出语句即可:

void printv()
{
    int v=12;
    printf("V: %d", ::v); // 前缀::指定访问全局作用域的v,输出为10
}

2. C语言同名全局变量的访问方法

C语言没有作用域解析运算符,当局部变量和全局变量同名时,可以在内部代码块中通过extern关键字声明全局变量来访问,示例如下:

#include <stdio.h>
int v = 10; // 全局变量
int main()
{
    int v = 12; // 同名局部变量
    printf("局部v:%d\n", v); // 输出12
    // 内部块用extern声明,指定访问全局的v
    {
        extern int v;
        printf("全局v:%d\n", v); // 输出10
    }
    return 0;
}

3. Python同名全局变量的访问方法

Python提供内置globals()函数,可直接获取当前模块的全局变量字典,即使存在同名局部变量,也可以通过字典键访问到对应的全局变量,示例如下:

v = 10 # 全局变量
def test():
    v = 12 # 同名局部变量
    print("局部v:", v) # 输出12
    print("全局v:", globals()['v']) # 输出10
test()

如果需要修改全局变量的值,则需要在函数开头用global关键字声明变量:

v = 10
def test():
    global v
    v = 12 # 此时修改的是全局变量v
test()
print(v) # 输出12

内容的提问来源于stack exchange,提问作者Meganathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:45:03