Tag Alat
direktori
Tag Alat
C parameter pembolehubah
Kadangkala, anda mungkin menghadapi situasi di mana anda mahu fungsi mengambil bilangan parameter yang berubah-ubah dan bukannya bilangan parameter yang telah ditetapkan. Bahasa C menyediakan penyelesaian untuk situasi ini dengan membenarkan anda mentakrifkan fungsi yang menerima pembolehubah bilangan argumen bergantung pada keperluan khusus anda. Contoh berikut menunjukkan definisi fungsi sedemikian.
int func(int, ... ) { . . .}int main(){
func(1, 2, 3);
func(1, 2, 3, 4);}Sila ambil perhatian bahawa parameter terakhir fungsi func() ditulis sebagai elipsis, iaitu tiga titik (... Parameter sebelum elipsis sentiasa int, mewakili jumlah bilangan parameter pembolehubah yang perlu dilalui. Untuk menggunakan ciri ini, anda perlu menggunakan fail pengepala stdarg.h, yang menyediakan fungsi dan makro yang melaksanakan fungsi variadic. Langkah khusus adalah seperti berikut:
Tentukan fungsi Parameter terakhir ialah elipsis Parameter sebelum elipsis sentiasa int, yang mewakili bilangan. parameter.
Buat pembolehubah jenis va_list dalam definisi fungsi, yang ditakrifkan dalam fail pengepala stdarg.h.
Gunakan parameter int dan makro va_start untuk memulakan pembolehubah va_list kepada senarai parameter. Makro va_start ditakrifkan dalam fail pengepala stdarg.h.
Gunakan va_arg makro dan pembolehubah va_list untuk mengakses setiap item dalam senarai argumen.
Gunakan makro va_end untuk membersihkan memori yang diberikan kepada pembolehubah va_list.
Sekarang mari kita ikuti langkah di atas untuk menulis fungsi yang mengambil bilangan pembolehubah argumen dan mengembalikan nilai puratanya:
#include <stdio.h>#include <stdarg.h>double average(int num,...){
va_list valist; double sum = 0.0; int i; /* 为 num 个参数初始化 valist */
va_start(valist, num); /* 访问所有赋给 valist 的参数 */ for (i = 0; i < num; i++) {
sum += va_arg(valist, int); } /* 清理为 valist 保留的内存 */
va_end(valist); return sum/num;}int main(){
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));}Apabila kod di atas Apabila disusun dan dilaksanakan, ia menghasilkan keputusan berikut. Perlu diingat bahawa fungsi average() dipanggil dua kali, dan setiap kali parameter pertama mewakili jumlah bilangan parameter pembolehubah yang diluluskan. Ellipses digunakan untuk menghantar bilangan argumen yang berubah-ubah.
rreeee
Alat AI Hot
Gambar buka pakaian secara percuma
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Apl berkuasa AI untuk mencipta foto bogel yang realistik
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak
Artikel Panas
Topik panas
Alat popular
Editor kod yang mudah digunakan dan percuma
Versi Cina, sangat mudah digunakan
Persekitaran pembangunan bersepadu PHP yang berkuasa
Alat pembangunan web visual
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)












![Bermula dengan Pembangunan Praktikal PHP: Penciptaan PHP Pantas [Forum Perniagaan Kecil]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)
