1

次の関数があります (Visual C++ 2005 で記述)

int &getInt_1()
{
    int a = 5;
    int &p = a;
    int p1 = p; // Line 1
    return p1;
}

int &getInt_2()
{
    int a = 5;
    int &p = a;
    return p;
}

私がこれまでに知っていたように、上記の関数は両方ともローカル変数のアドレスを返します。私が正しければ、次のような質問があります。

  1. 上記の機能の違いは何ですか?なぜgetInt_1()コンパイラ ( "returning address of local variable")から警告が表示されgetInt_2()ないのに、警告が表示されるのですか?

  2. とはLine 1どういう意味ですか? の後Line 1、 もp1 参照になりaますか?

4

3 に答える 3

1

1)あなたが指摘したため、どちらも未定義の動作です。おそらくMSVSの見落としです。

2) いいえ、p1それ自体は参考にはなりません。その行は次と同等ですint p1 = a;

于 2012-05-02T08:33:04.110 に答える