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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C可變長實參列表

2019-11-10 22:59:02
字體:
供稿:網(wǎng)友

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

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

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

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

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

#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ā)表
主站蜘蛛池模板: 延寿县| 南澳县| 贵德县| 景宁| 吴桥县| 河间市| 平利县| 始兴县| 金昌市| 蒙阴县| 黄龙县| 巴中市| 宜州市| 察雅县| 合江县| 西林县| 滨州市| 鄄城县| 大宁县| 乌鲁木齐市| 吉林市| 贵阳市| 姜堰市| 乐安县| 延长县| 仪陇县| 巴楚县| 西吉县| 渭源县| 库尔勒市| 开鲁县| 广西| 夏津县| 吴忠市| 灯塔市| 宾阳县| 札达县| 微博| 东乌珠穆沁旗| 博客| 莆田市|