标签:并且 例子 second with 表示 div std 文件 分享
1 用户可以在调用函数的时候确定这个函数所需要的参数。
2例子:printf(const char* format,...);
注意:第一个参数是固定的,后面的参数用三个.表示是可变的
3 实现一个可变函数所需要的一些函数介绍:
(1)包含头文件stdarg.h 其中定义了一系列的宏来处理这个可变长度的列表。
(2)va_list:看成数据类型,循环使用并且每次指向一个可变的参数。因此该类型的变量代表整个参数的列表。
(3宏 va_stat宏初始化一个va_list类型的变量,让它指向第一个可变参数。
(4)宏va_arg:返回一个可变长度参数的值并使其指向下一个可变参数
(5)va_end做清理工作
4 流程图
4 实现
1 #include <stdio.h> 2 #include <stdarg.h> 3 4 /* 可变参数函数,其中第一个参数的类型是固定的,在定义的时候必须已经定义好 */ 5 int print_args(int begin, ...) 6 { 7 va_list ap; 8 char *p; 9 int n; 10 11 va_start(ap, begin); /* 从可变参数的第一个参数开始遍历 */ 12 p = va_arg(ap, char *); /* 得到第一个参数 */ 13 n = 0; 14 15 while(p != NULL){ /* 可变参数以NULL结尾,在遇到NULL结束符之前输出所有的 16 参数 */ 17 n++; /* 累计参数的个数 */ 18 19 printf("arg %d : %s\n", n, p); /* 输出每个参数 */ 20 21 p = va_arg(ap, char*); /* 得到下一个参数 */ 22 } 23 24 va_end(ap); /* 参数处理结束,做一些清理工作 */ 25 26 return n; /* 返回参数的个数 */ 27 } 28 29 int main(void) 30 { 31 int n; 32 33 n = print_args(-1, "nihao", "zhongguo", NULL); /* 第一次调用,使用4个参数 */ 34 printf("first, without NULL : %d\n", n); 35 36 n = print_args(-1, "China", "beijing", "Olympic", NULL);/* 第二次调用, 37 使用5个参数*/ 38 39 printf("second, without NULL : %d\n", n); 40 return 0; 41 }
6 截图
标签:并且 例子 second with 表示 div std 文件 分享
原文地址:http://www.cnblogs.com/lanjianhappy/p/7189846.html