<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    C語言中實現參數個數可變函數

    時間:2025-01-16 21:01:56 C語言 我要投稿
    • 相關推薦

    C語言中實現參數個數可變函數

      導語:C語言中實現參數個數可變函數:其實,我總覺得有個結論應該是必然的。既然很多語言最初都是由C語言發展來的,還有很多語言的基礎是用C語言實現的。

      那么,這些用C語言實現的高級語言的很多特性或者是功能在一定程度上應該是在C語言的開發中可以模擬的。正是如此,很多時候考慮諸如XXX是否可以用C語言實現的時候,應該無需考慮就能夠給出一個肯定的答復。

      關于參數可變的函數的實現其實還不是這種情況,但是讓我想到的是“是否能夠實現參數個數可變的C語言功能”時,基本上可以給出一個可以的答案。

      在C語言中,參數個數可變的函數功能實現依賴于幾個stdarg.h中定義的宏。在使用的行為上,它們看起來像是函數。幾個宏清單如下:

      va_list:行為有點像數據類型

      va_start:行為有點像函數,參數為va_list類型的參數表以及參數個數

      va_arg:行為像函數,參數為va_list參數表以及參數數據類型

      va_end:行為像函數,參數為va_list的參數表

      示范代碼如下;

    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    #include"stdio.h"          
    #include"stdarg.h"          
    float avrg(intarg_num,...);          
    int main(void)          
    {          
    printf("avrg value is:%f ",avrg(4,1,5,3,6));          
    return 0;          
    }          
    float avrg(intarg_num,...)          
    {          
    va_list args;          
    int i = 0;          
    int sum = 0;          
    float avrg_value = 0.0f;          
    va_start(args,arg_num);          
    for(i = 0;i < arg_num;i++)          
    {          
    sum += va_arg(args,int);          
    }          
    avrg_value = (float)sum / arg_num;          
    va_end(args);          
    return avrg_value;          
    }          
    編譯運行以及驗證結果如下:          
    E:WorkSpace
    <address id="ousso"></address>
    1. 日日做夜狠狠爱欧美黑人