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

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

C可變長實參列表

2019-11-11 00:05:40
字體:
來源:轉載
供稿:網友

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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 布拖县| 洪湖市| 罗甸县| 宜君县| 阳泉市| 灵宝市| 青河县| 东明县| 平安县| 和龙市| 通河县| 江口县| 伊宁县| 呼伦贝尔市| 泊头市| 临高县| 大田县| 张家港市| 普宁市| 黄平县| 阿坝| 长兴县| 留坝县| 民丰县| 新昌县| 柳江县| 合江县| 蒙自县| 新竹市| 沁源县| 甘孜| 兴安县| 汤原县| 三门县| 莆田市| 巴里| 都江堰市| 永城市| 资阳市| 马公市| 巩留县|