Rumah > pembangunan bahagian belakang > C++ > Penjelasan terperinci tentang mekanisme panggilan fungsi C++

Penjelasan terperinci tentang mekanisme panggilan fungsi C++

PHPz
Lepaskan: 2024-04-11 14:12:02
asal
1184 orang telah melayarinya

Mekanisme panggilan fungsi dalam C++ melibatkan menghantar argumen kepada fungsi dan melaksanakan kodnya, mengembalikan hasilnya jika wujud. Terdapat dua cara untuk lulus parameter: lulus mengikut nilai (pengubahsuaian dibuat di dalam fungsi) dan lulus melalui rujukan (pengubahsuaian ditunjukkan dalam pemanggil). Dalam nilai lulus, pengubahsuaian nilai dalam fungsi tidak menjejaskan nilai asal (seperti printValue), manakala pengubahsuaian dalam rujukan lulus mempengaruhi nilai asal (seperti printReference).

C++ 函数调用机制详解

Penjelasan terperinci tentang mekanisme panggilan fungsi C++

Pengenalan

Dalam C++, panggilan fungsi ialah mekanisme yang membolehkan atur cara melaksanakan tugas tertentu dengan menghantar parameter. Panggilan fungsi melibatkan langkah berikut:

  1. Melepasi parameter.
  2. Pindahkan kawalan ke badan fungsi.
  3. Laksanakan kod dalam badan fungsi.
  4. Kembalikan nilai pulangan kepada pemanggil (jika fungsi mempunyai nilai pulangan).
  5. Pulihkan kawalan kepada pemanggil.

Melepasi nilai dan lulus melalui rujukan

Terdapat dua mekanisme lulus parameter dalam C++:

  • Melalui nilai: Parameter dihantar ke fungsi mengikut nilai. Sebarang pengubahsuaian yang dibuat kepada parameter dalam fungsi tidak ditunjukkan dalam nilai asal yang diluluskan dalam pemanggil.
  • Lulus melalui rujukan: Parameter dihantar ke fungsi melalui rujukan. Sebarang pengubahsuaian yang dibuat kepada parameter dalam fungsi ditunjukkan dalam nilai asal yang diluluskan dalam pemanggil.

Panggil fungsi mengikut nilai

void printValue(int value) {
  value++; // 对 value 的修改不会影响调用者传递的原始值
}

int main() {
  int num = 10;
  printValue(num);
  cout << num << endl; // 输出 10
}
Salin selepas log masuk

Panggil fungsi dengan rujukan

void printReference(int &value) {
  value++; // 对 value 的修改会影响调用者传递的原始值
}

int main() {
  int num = 10;
  printReference(num);
  cout << num << endl; // 输出 11
}
Salin selepas log masuk

Kes praktikal

Andaikan kita mempunyai fungsi yang mencari kod yang paling biasa (G.doCD). :

int gcd(int a, int b) {
  if (b == 0) {
    return a;
  }

  return gcd(b, a % b);
}
Salin selepas log masuk

Memanggil fungsi gcd mengikut nilai:

int main() {
  int a = 10, b = 12;
  int gcdValue = gcd(a, b);
  cout << "GCD: " << gcdValue << endl; // 输出 2
}
Salin selepas log masuk

Dalam kes ini, nilai asal a dan b tidak akan terjejas oleh pengubahsuaian parameter dalam fungsi gcd.

Memanggil fungsi gcd melalui rujukan:

int main() {
  int a = 10, b = 12;
  gcd(a, b);
  cout << "GCD: " << a << endl; // 输出 2
}
Salin selepas log masuk

Dengan menggunakan rujukan lulus, fungsi boleh mengubah suai nilai a. Oleh itu, pemanggil menerima nilai GCD dan menyimpannya dalam a.

Atas ialah kandungan terperinci Penjelasan terperinci tentang mekanisme panggilan fungsi C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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