ホームページ >バックエンド開発 >C++ >C++ 関数の参照パラメータとポインタ パラメータの違い

C++ 関数の参照パラメータとポインタ パラメータの違い

WBOY
WBOYオリジナル
2024-04-20 21:21:021093ブラウズ

C 関数では、参照パラメータは変数アドレスを渡し、パラメータの変更は元の変数に影響しますが、ポインタ パラメータはアドレスへのポインタを渡し、パラメータの変更は元の変数には影響しません。 。

C++ 函数中引用参数和指针参数的区别

#C 関数における参照パラメータとポインタ パラメータの違い

C では、関数は参照パラメータまたはポインタ パラメータを受け入れることができます。 。どちらも変数のアドレスを渡すために使用されますが、それらの間にはいくつかの重要な違いがあります。

参照パラメータ

参照パラメータは、シンボル

& を通じて変数のアドレスを渡します。基本的に変数自体を渡します。つまり、参照パラメーターに加えられた変更は元の変数に反映されます。

コード例:

void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 5;
  int y = 10;
  swap(x, y);  // 交换 x 和 y 的值
  cout << x << " " << y << endl; // 输出:10 5
}

ポインタ パラメータ

ポインタ パラメータはシンボルを介して変数を渡します。

*住所。基本的に、ポインタを変数のメモリ アドレスに渡します。これは、ポインタ パラメータに加えられた変更が元の変数に反映されないことを意味します。

コードサンプル:

void swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}

int main() {
  int x = 5;
  int y = 10;
  swap(&x, &y);  // 交换 x 和 y 的值
  cout << x << " " << y << endl; // 输出:5 10
}

相違点の概要

送信方法参照変数アドレスポインタアドレスを渡すパラメータの変更元の変数を変更いいえ元の変数を変更するメモリ使用量ポインタ サイズ参照サイズ目的実際のパラメータを渡す大きなオブジェクトまたは複雑な構造を渡す
特徴 参照パラメータ ポインタパラメータ

実践的なケース

ニーズを考慮する2つの要素を交換する関数。

参照パラメータを使用する:

void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

ポインタ パラメータを使用する:

void swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}

どの方法がより良いかは、関係する特定の状況によって異なります。 。 2 つの単純な値を交換する必要がある場合は、参照パラメータの方が適切です。ただし、大きなオブジェクトや複雑な構造を交換する必要がある場合は、関数内外の大きなデータのコピーを避けるため、ポインター パラメーターの方が適しています。

以上がC++ 関数の参照パラメータとポインタ パラメータの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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