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

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

C可變長實(shí)參列表

2019-11-10 23:08:18
字體:
供稿:網(wǎng)友

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

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

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

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

宏va_start接受兩個(gè)實(shí)參,一個(gè)是va_list聲明的對象,另一個(gè)是實(shí)參列表中在省略號前的最右邊的標(biāo)識符。 宏va_arg接受兩個(gè)實(shí)參,一個(gè)是va_list聲明的對象,另一個(gè)是期望在實(shí)參列表中出現(xiàn)的數(shù)據(jù)的類型,宏va_arg返回的是實(shí)參的值。 宏va_end接受一個(gè)實(shí)參,即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ā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 图木舒克市| 怀仁县| 韩城市| 茂名市| 建宁县| 财经| 顺昌县| 肥城市| 永平县| 石狮市| 子长县| 兰西县| 牡丹江市| 齐齐哈尔市| 奇台县| 北宁市| 山丹县| 东山县| 淮滨县| 牟定县| 遵义县| 屯门区| 类乌齐县| 习水县| 商水县| 安仁县| 晋城| 延长县| 偃师市| 鄄城县| 清河县| 荣昌县| 教育| 临汾市| 保定市| 周口市| 舞阳县| 绥芬河市| 沿河| 上犹县| 建昌县|