cari
  • Log masuk
  • Daftar
Penetapan semula kata laluan berjaya

Ikuti proiects vou berminat dengan andi aet terbaru mengenai mereka

C parameter pembolehubah

Koleksi 205
Baca 91672
masa kemas kini 2016-09-11

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
Undress AI Tool
Undress AI Tool

Gambar buka pakaian secara percuma

AI Clothes Remover
AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undresser.AI Undress
Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

Stock Market GPT
Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat popular
Notepad++7.3.1
Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac
SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)