ホームページ >バックエンド開発 >C++ >ローカル C 変数への参照を返すことが一般的に推奨されないのはなぜですか?

ローカル C 変数への参照を返すことが一般的に推奨されないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 18:12:12895ブラウズ

Why is Returning a Reference to a Local C   Variable Generally Discouraged?

ローカル変数への参照を返す

C では、ローカル変数への参照を返すことは、ダングリングにつながる可能性があるため、一般的に推奨されません。参考文献。ただし、特定の状況では、以下の例のように、まだ機能しているように見える場合があります。

int& foo()
{
    int i = 6;
    std::cout << &i << std::endl;
    return i;
}

int main()
{
    int i = foo();
    std::cout << i << std::endl;
    std::cout << &i << std::endl;
}

このコードはエラーなしでコンパイルおよび実行され、次のように出力されます。

0xfefef2
6
0x7ffe82600698

Contrary予想どおり、foo() への呼び出しが戻った後も、main() の変数 i は値 6 を保持します。これは、この場合、コンパイラが foo() 関数の終了後もローカル変数の有効期間を延長したためです。

この動作は実装固有であり、依存すべきではありません。一般に、ローカル変数への参照を返さないようにすることが推奨されます。ローカル変数の値を返す必要がある場合は、代わりに値で返すことをお勧めします。

以上がローカル C 変数への参照を返すことが一般的に推奨されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。