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

首頁 > 學院 > 開發(fā)設計 > 正文

C可變長實參列表

2019-11-11 00:13:43
字體:
來源:轉載
供稿:網友

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

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

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

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;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 建昌县| 泾川县| 高邮市| 弥渡县| 甘洛县| 林西县| 天台县| 冕宁县| 丹寨县| 南华县| 石家庄市| 安西县| 蓬莱市| 沛县| 常山县| 安吉县| 丰镇市| 乌什县| 尉氏县| 中西区| 察哈| 濮阳市| 澄江县| 兖州市| 唐海县| 个旧市| 德惠市| 马公市| 宣威市| 尼勒克县| 乐东| 文水县| 买车| 龙里县| 天镇县| 永和县| 山阳县| 会东县| 道孚县| 白水县| 商丘市|