1

現在のスコープではアクセスできないライブ変数の概念について聞いたことがあります。私が頭のてっぺんから考えることができる3つの例は次のとおりです。

  1. ptr = malloc(size * sizeof(ptr_type); ptr = different_ptr;

  2. スコープ内にない、呼び出された関数内の静的変数、または

  3. スコープ外のファイル内の、外部ではないグローバル変数。

これについて 2 つの質問があります。この概念を正しく理解していますか? もしそうなら、標準 C には他にどのような例がありますか?

4

1 に答える 1

2
  1. はい、コンセプトを正確に理解しているようです。

  2. ネストされたスコープ:

    void pointless(int x)
    {
        int y = x;
        if (y > 0)
        {
            int x = y + 1;  // This x means the argument is out of scope (hidden)
            if (x > 10)
            {
                 int y = x - 10;  // This y hides the previous y
                 printf("%d %d\n", x, y);
            }
        }
    }
    

    これは良いコードではありませんが、コード ジェネレーターはあまり意味のないことを行うことがありますが、それに少し似た入れ子になった変数宣言を使用します。

于 2013-02-28T06:11:24.417 に答える