<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

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

            時間:2025-08-30 03:16:17 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的參數表

              示范代碼如下;

          1. 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
            <delect id="sj01t"></delect>

            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看