Rumah > pembangunan bahagian belakang > C++ > Terokai pelaksanaan asas parameter lalai dan parameter pembolehubah fungsi C++

Terokai pelaksanaan asas parameter lalai dan parameter pembolehubah fungsi C++

PHPz
Lepaskan: 2024-04-22 21:15:01
asal
1186 orang telah melayarinya

Parameter lalai: Tentukan nilai parameter lalai dalam definisi fungsi, gunakan parameter pembolehubah tetap yang dipratakrif: Gunakan elips untuk menunjukkan, kompil ke penuding ke tatasusunan, bungkus parameter masuk, lalui tatasusunan untuk mengakses parameter.

探究 C++ 函数默认参数和可变参数的底层实现

Terokai asas pelaksanaan parameter lalai dan parameter pembolehubah dalam fungsi C++

Parameter lalai

Parameter lalai ialah mekanisme yang membolehkan anda menentukan nilai lalai untuk parameter. Ia membolehkan fungsi menggunakan nilai lalai apabila tiada parameter sebenar diluluskan.

Di bawah tudung, parameter lalai sebenarnya dilaksanakan oleh pengkompil, iaitu parameter yang dipratakrifkan sebagai pemalar. Apabila pengkompil memanggil fungsi dengan parameter lalai, ia menyemak sama ada pembolehubah masuk diluluskan, dan jika tidak, ia menggunakan nilai lalai yang dipratentukan.

Contohnya:

void print_number(int num, int default_num = 10) {
  cout << (num ? num : default_num) << endl;
}
Salin selepas log masuk

Apabila memanggil fungsi ini, kita boleh lulus atau tidak lulus parameter kedua:

print_number(5); // 输出 5
print_number(0, 20); // 输出 20
Salin selepas log masuk

Parameter pembolehubah

Parameter pembolehubah juga dipanggil parameter panjang pembolehubah, yang membenarkan fungsi menerima pembolehubah bilangan parameter. Dalam C++, varargs diwakili oleh elips (...). ...) 表示。

在底层,可变参数被编译为一个指向数组的指针。当函数被调用时,编译器将传入的参数打包到分配的此数组中。然后,函数可以遍历该数组来访问参数。

例如:

int sum_numbers(int count, ...) {
  int sum = 0;
  va_list args;
  va_start(args, count);  // 获取可变参数列表
  for (int i = 0; i < count; ++i) {
    sum += va_arg(args, int);  // 访问第 i 个参数
  }
  va_end(args);  // 清理可变参数列表
  return sum;
}
Salin selepas log masuk

当调用该函数时,我们可以传递任意数量的参数:

cout << sum_numbers(3, 1, 2, 3) << endl; // 输出 6
cout << sum_numbers(5, 10, 20, 30, 40, 50) << endl; // 输出 150
Salin selepas log masuk

实战案例

在现实世界中,默认参数和可变参数有广泛的应用。例如:

  • 用于指定备用值,避免在未传递参数时出现错误。
  • 用于创建灵活且可适应的函数,可以处理不同数量的参数。
  • 用于创建库函数,该函数可接受不定长参数列表,例如 Python 中的 print()
  • Di bawah tudung, hujah variadik disusun menjadi penunjuk kepada tatasusunan. Apabila fungsi dipanggil, pengkompil membungkus argumen yang diluluskan ke dalam tatasusunan yang diperuntukkan ini. Fungsi itu kemudiannya boleh lelaran ke atas tatasusunan untuk mengakses parameter.
🎜Contohnya: 🎜rrreee🎜Apabila memanggil fungsi ini, kita boleh menghantar sebarang bilangan parameter: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Dalam dunia sebenar, parameter lalai dan parameter berubah mempunyai pelbagai aplikasi. Contohnya: 🎜
  • Digunakan untuk menentukan nilai alternatif untuk mengelakkan ralat apabila parameter tidak diluluskan. 🎜
  • Untuk mencipta fungsi yang fleksibel dan boleh disesuaikan yang boleh mengendalikan bilangan hujah yang berbeza-beza. 🎜
  • Digunakan untuk mencipta fungsi pustaka yang menerima senarai argumen panjang pembolehubah, seperti fungsi print() dalam Python. 🎜🎜

Atas ialah kandungan terperinci Terokai pelaksanaan asas parameter lalai dan parameter pembolehubah 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