当存在本地和全局冲突时如何访问全局变量

Vis*_*ire 5 c global-variables

代码:

int a = 33;
int main()
{
  int a = 40; // local variables always win when there is a conflict between local and global.
  // Here how can i access global variable 'a' having value '33'.
}
Run Code Online (Sandbox Code Playgroud)

如果你问:为什么有人想做上面的事情?为什么[a-zA-Z]*?

我的回答是:只知道"有可能这样做".

谢谢.

cni*_*tar 13

这个老把戏怎么样:

int main()
{
    int a = 40; // local variables always win when there is a conflict between local and global.

    {
        extern int a;
        printf("%d\n", a);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @R ..公平地说,我想我不久前在你的一篇旧文章中看过它. (4认同)
  • +1击败我30秒. (3认同)

R..*_*R.. 8

int a = 33;
int main()
{
  int a = 40;
  int b;
  {
    extern int a;
    b = a;
  }
  /* now b contains the value of the global a */
}
Run Code Online (Sandbox Code Playgroud)

一个更难的问题是a如果它static与文件范围有关,但这也是可解决的:

static int a = 33;
static int *get_a() { return &a; }
int main()
{
  int a = 40;
  int b = *get_a();
  /* now b contains the value of the global a */
}
Run Code Online (Sandbox Code Playgroud)