国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C可變長實參列表

2019-11-11 01:39:29
字體:
來源:轉載
供稿:網友

C語言允許創建一個接收實參個數不確定的函數。例如PRintf就可以接收任意數目的實參。若要聲明一個參數個數不確定的函數,可將省略號(…)放在函數原型的形參列表末尾,用于表示這個函數可以接收可變數目的各種類型的實參。如下:

int printf(const char *format, ...);

可變實參頭文件stdarg.h中的宏和定義,為創建一個可變長實參列表的函數提供了必需的功能。如下:

va_list 適用于保存va_start、va_arg和va_end所需的信息。為了訪問到一個可變長實參列表中的實參,必須定義一個類型為va_list的變量va_start 在一個可變長實參列表中的實參被訪問之前,先調用這個宏,初始化用va_list聲明的對象以便讓va_arg和va_end來使用va_arg 這個宏展開成一個表示可變長實參列表中下一個實參的值和類型的表達式。每次對va_arg的調用都要修改用va_list聲明的對象,以使這個對象指向列表中的下一個實參va_end 當一個函數的可變長實參列表是由va_start來引用時,宏va_end可用于從這樣的函數中正常返回

宏va_start接受兩個實參,一個是va_list聲明的對象,另一個是實參列表中在省略號前的最右邊的標識符。 宏va_arg接受兩個實參,一個是va_list聲明的對象,另一個是期望在實參列表中出現的數據的類型,宏va_arg返回的是實參的值。 宏va_end接受一個實參,即va_list聲明的對象,以便調用的函數正常返回。 例如下:

#include <stdio.h>#include <stdarg.h>double average(int i, ...);int main(int argc, char const *argv[]){ //average(4, 3, 1, 2, 2); printf("%f/n", average(4, 3.0, 1.0, 2.0, 2.0)); return 0;}double average(int i, ...) { va_list args; va_start(args, i); int counter = 0; double sum = 0; for (; counter < i; counter++) { sum += va_arg(args, double); //printf("%d/n", va_arg(args, int)); } va_end(args); return sum / i;}
上一篇:TreeSet

下一篇:網絡爬蟲爬取小說3

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗田县| 原阳县| 泰兴市| 吴江市| 鄯善县| 乃东县| 天台县| 左云县| 息烽县| 桂阳县| 泰顺县| 洛南县| 商都县| 高唐县| 安图县| 宁河县| 屏东县| 犍为县| 揭东县| 宁德市| 长泰县| 双城市| 平昌县| 莲花县| 武定县| 图们市| 北辰区| 神木县| 绵竹市| 龙州县| 武山县| 新津县| 西林县| 北碚区| 定州市| 邻水| 大厂| 灯塔市| 乐山市| 丹巴县| 南雄市|