【问题标题】:How to access global value without using extern keyword? [duplicate]如何在不使用 extern 关键字的情况下访问全局值? [复制]
【发布时间】:2019-05-01 13:18:22
【问题描述】:

从下面的代码如何打印全局值:

条件是,不能使用extern关键字,不能注释本地初始化&不能移位printf函数。

#include <stdio.h>

int a = 20;

int main()
{
    int a = 10;
    printf("%d",a);
}

我期待20 的输出。

【问题讨论】:

  • int a=20;main(){int *ga=&a;int a=10;printf("%d\n",*gaa);} -- 不使用 extern: check -- 不评论 local: check -- not shift printf: check
  • 你应该首先避免这样的名称冲突。
  • 你应该避免使用全局变量
  • 在 C 中,没有一种明智的方法可以做到这一点,除非您在 main() 的定义之前添加 #define a z 并在其后添加 #undef a 或其他同样愚蠢的东西。在 C++ 中,范围解析运算符可能会有所帮助,但会修改 printf() 语句。无论你的教员想什么技术,都不太可能在专业上有用;编写清晰的代码是首要要求。

标签: c


【解决方案1】:

extern 将无济于事,因为您在大多数内部范围(在本例中为函数 main 范围)中有另一个同名的变量。因此,如果是全局变量,您将看到这个变量。

您需要重命名这些变量之一。

int a=20;
int main()
{
    int b=10;
    printf("%d",a);
}

你可能有更多的内部范围:

int a=20;
int main()
{
    int a=10;
    {   
        int a = 5;
        {
            int a = 2;
            printf("%d",a);
        }
    }
}

结果是 2

【讨论】:

  • 不,应该是全局 a=20 & 局部 a=10。
  • 这是我的老师在昨天的测试中提出的。
猜你喜欢
  • 2015-11-24
  • 2019-06-25
  • 2012-06-22
  • 2012-12-14
  • 1970-01-01
  • 2022-01-19
  • 2012-08-11
  • 1970-01-01
  • 2019-07-10
相关资源
最近更新 更多