<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            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的參數表

              示范代碼如下;

                  <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                  <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                  <p id="bbfd9"></p>

                  <p id="bbfd9"><cite id="bbfd9"></cite></p>

                    <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                    <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                    飘沙影院
                    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