ホームページ  >  記事  >  バックエンド開発  >  C++ における値渡しと参照渡しの本質的な違い

C++ における値渡しと参照渡しの本質的な違い

PHPz
PHPzオリジナル
2024-04-12 12:00:02539ブラウズ

C での値の受け渡しと参照の受け渡しの違い: 値の受け渡しではパラメーターのコピーが作成され、元の変数には影響しません。参照の受け渡しではパラメーターが直接操作され、変更は元の変数に反映されます。実際のケース: 2 つの整数値を交換する 値渡しでは交換されませんが、参照渡しでは交換されます。

C++ 值传递和引用传递的本质区别

#C での値の受け渡しと参照の受け渡しの本質的な違い

C では、関数のパラメーターを渡すときに、主に 2 つの選択肢があります。 : 値渡しと参照渡し。これら 2 つの受け渡しメソッドの基本的な違いは、値による受け渡しではパラメーターのコピーが作成されるのに対し、参照による受け渡しでは渡されたパラメーターが直接操作されることです。

値の受け渡し

値の受け渡しでは、パラメーター値のコピーが関数に渡されます。これは、渡された引数のコピーに対して関数が行った変更は元の変数には影響しないことを意味します。

void PrintValue(int num) {
  num++;
}

int main() {
  int x = 5;
  PrintValue(x);  // 传递 x 的副本
  cout << x;  // 输出 5,因为原始值不受影响
}

参照渡し

参照渡しでは、関数に渡されるパラメータの参照が関数に渡されます。これは、関数が渡された引数に対して直接動作し、変更があれば元の変数に反映されることを意味します。

void PrintReference(int& num) {
  num++;
}

int main() {
  int x = 5;
  PrintReference(x);  // 传递 x 的引用
  cout << x;  // 输出 6,因为原始值已被修改
}

実践的なケース

値の受け渡しと参照の受け渡しの違いを説明するために、2 つの整数の値を交換する実践的なケースを取り上げてみましょう。

値の転送:

// 值传递不会交换原始变量的值
void SwapValues(int a, int b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 5, y = 10;
  SwapValues(x, y);
  cout << x << " " << y;  // 输出 5 10,原始值没有交换
}

リファレンスの転送:

// 引用传递交换原始变量的值
void SwapReferences(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

int main() {
  int x = 5, y = 10;
  SwapReferences(x, y);
  cout << x << " " << y;  // 输出 10 5,原始值已交换
}

以上がC++ における値渡しと参照渡しの本質的な違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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