Rumah >pembangunan bahagian belakang >C++ >Di manakah Nilai Parameter Lalai Perlu Ditakrifkan dalam C?
Dalam C , di manakah anda harus menentukan nilai lalai untuk parameter fungsi: dalam pengisytiharan sahaja, dalam definisi sahaja, atau di kedua-dua tempat?
Jawapannya ialah nilai parameter lalai mesti dinyatakan dalam pengisytiharan, bukan dalam takrifan. Pengisytiharan ialah satu-satunya bahagian fungsi yang boleh dilihat oleh pemanggil, jadi ia mesti mengandungi semua maklumat yang diperlukan untuk fungsi dipanggil dengan betul.
Dalam erti kata lain, nilai parameter lalai ialah sebahagian daripada jenis fungsi tandatangan. Ia menentukan jenis parameter dan sama ada ia mempunyai nilai lalai. Jika nilai parameter lalai ditinggalkan daripada pengisytiharan, pengkompil akan menganggap bahawa parameter tidak mempunyai nilai lalai dan akan menjana ralat jika ia tidak disediakan oleh pemanggil.
Sebagai contoh, fungsi berikut pengisytiharan mentakrifkan fungsi yang mengambil dua parameter integer, x dan y, dengan nilai lalai 0 dan 1, masing-masing:
int foo(int x = 0, int y = 1);
The panggilan fungsi berikut memanggil fungsi foo dengan nilai lalai untuk kedua-dua parameter:
int result = foo();
Panggilan fungsi berikut memanggil fungsi foo dengan nilai bukan lalai untuk parameter x:
int result = foo(5);
Perhatikan bahawa nilai parameter lalai untuk y masih digunakan dalam panggilan fungsi kedua, walaupun parameter x dinyatakan secara eksplisit. Ini kerana nilai parameter lalai adalah sebahagian daripada tandatangan jenis fungsi dan tidak mungkin untuk mengatasinya dalam panggilan fungsi.
Adalah mungkin untuk menentukan nilai parameter lalai dalam definisi fungsi, tetapi ini tidak disyorkan. Takrifan hanya boleh dilihat oleh pengkompil, dan ia tidak menjejaskan tandatangan jenis fungsi. Akibatnya, ia boleh mengelirukan untuk dikekalkan dan ia boleh menyebabkan ralat jika nilai parameter lalai ditukar dalam pengisytiharan tetapi tidak dalam definisi.
Atas ialah kandungan terperinci Di manakah Nilai Parameter Lalai Perlu Ditakrifkan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!