ホームページ >バックエンド開発 >C++ >C のポインター: 値渡しと参照渡し - どちらを使用する必要がありますか?

C のポインター: 値渡しと参照渡し - どちらを使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-30 09:53:09545ブラウズ

Pointers in C  : Pass by Value vs. Pass by Reference—Which Should I Use?

値によるポインターの受け渡しと参照によるポインターの受け渡し

関数にポインターを渡す場合、値による受け渡しと参照による受け渡しの違いを理解することが重要です。

この例では、関数 clickOnBubble が targetBubble の値を設定しようとしています。バブルベクトルに格納されたポインタへ。ただし、関数は targetBubble のコピーを関数に渡すだけなので、関数内でコピーに加えられた変更は元のポインターには反映されません。

Pointer-to による参照による受け渡し・Pointer

元のポインタを変更するには参照渡しする必要があります。これは、次のコードに示すように、ポインターツーポインターを使用して実行できます。

void foo(int **ptr) {
    *ptr = new int[10]; // Just for example, use RAII in a real-world application
}

この例では、ptr はポインターへのポインターです。関数が呼び出されると、targetBubble のアドレスが関数に渡されます。この関数は、二重間接演算子 (**) を使用して、元の targetBubble ポインターにアクセスして変更できます。

Reference-to-Pointer による参照による受け渡し

Anotherポインターを参照によって渡す方法は、次のようにポインターへの参照を使用することです。 code:

void bar(int *&ptr) {
    ptr = new int[10];
}

ここで、ptr はポインタへの参照です。関数が呼び出されると、参照は targetBubble にバインドされます。その後、関数は参照を通じて targetBubble を直接変更できます。

以上がC のポインター: 値渡しと参照渡し - どちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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