5

コード:

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'.
}

あなたが尋ねた場合:なぜ誰かが上記のことをしたいのですか?なぜ[a-zA-Z]*?

私の答えは次のようになります:「そうすることは可能です」ということを知っているだけです。

ありがとう。

4

3 に答える 3

15

この古いトリックはどうですか:

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);
    }
}
于 2013-03-10T20:06:37.590 に答える
11
int a = 33;
int main()
{
  int a = 40;
  int b;
  {
    extern int a;
    b = a;
  }
  /* now b contains the value of the global a */
}

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 */
}
于 2013-03-10T20:07:12.333 に答える
4

CそれはC++です、私はタグを見落としました、ごめんなさい!

int a = 100;

int main()
{
    int a = 20;

    int x = a; // Local, x is 20

    int y = ::a; // Global, y is 100

    return 0;
}
于 2013-03-10T20:41:25.053 に答える