Perbezaan penting antara lulus dengan nilai dan lulus dengan rujukan dalam C++

PHPz
Lepaskan: 2024-04-12 12:00:02
asal
547 orang telah melayarinya

Perbezaan antara hantaran nilai dan hantaran rujukan dalam C++: hantaran nilai mencipta salinan parameter dan tidak menjejaskan pembolehubah asal, hantaran rujukan secara langsung mengendalikan parameter, dan pengubahsuaian ditunjukkan dalam pembolehubah asal. Kes praktikal: menukar dua nilai integer tidak akan bertukar, tetapi lulus melalui rujukan akan.

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

Perbezaan penting antara nilai lulus dan rujukan lulus dalam C++

Dalam C++, apabila menghantar parameter fungsi, terdapat dua pilihan utama: lulus nilai dan lulus rujukan. Perbezaan asas antara kedua-dua kaedah lulus ini ialah lulus mengikut nilai mencipta salinan parameter, manakala lulus melalui rujukan terus beroperasi pada parameter yang diluluskan.

Pass by value

In pass by value, salinan nilai parameter dihantar ke fungsi. Ini bermakna bahawa sebarang pengubahsuaian yang dibuat oleh fungsi pada salinan hujah yang diluluskan tidak akan menjejaskan pembolehubah asal.

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

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

Lulus melalui rujukan

Secara rujukan, rujukan parameter yang dihantar kepada fungsi dihantar kepada fungsi. Ini bermakna fungsi tersebut beroperasi secara langsung pada hujah yang diluluskan dan sebarang pengubahsuaian akan ditunjukkan dalam pembolehubah asal.

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

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

practical case

A Kes praktikal untuk menggambarkan perbezaan antara nilai lulus dan lulus rujukan: Menukar nilai dua bilangan bulat:

Value lulus:

// 值传递不会交换原始变量的值
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,原始值没有交换
}
Salin selepas log masuk
e

reference lulus:

// 引用传递交换原始变量的值
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,原始值已交换
}
Salin selepas log masuk
e

Atas ialah kandungan terperinci Perbezaan penting antara lulus dengan nilai dan lulus dengan rujukan dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan