c语言函数可变参数 例
2016-05-04 09:06
183 查看
c语言函数可变参数 例
结果
#include "stdio.h" #include "stdarg.h" void simple_va_fun(int num, void *start, ...) { va_list arg_ptr; int i; void *nArgValue =start; printf("num = %d\n", num); va_start(arg_ptr,start); //以固定参数的地址为起点确定变参的内存起始地址。 do { printf("arg: %d\n", *(int *)nArgValue); //输出各参数的值 nArgValue = va_arg(arg_ptr, void *); --num; }while(num>0); va_end(arg_ptr); return; } void simple_va_fun2(int start, ...) { va_list arg_ptr; int i; int num = start; void *nArgValue =start; printf("num = %d\n", num); va_start(arg_ptr,start); //以固定参数的地址为起点确定变参的内存起始地址。 for(i=0;i<num;i++){ nArgValue = va_arg(arg_ptr, void *); printf("arg: %d\n", *(int *)nArgValue); //输出各参数的值 } va_end(arg_ptr); return; } int main(int argc, char* argv[]) { int a=1,b=2,c=3, d=4,e=5; simple_va_fun(1, &a); simple_va_fun(2, &a, &b); simple_va_fun(3, &a, &b, &c); simple_va_fun2(1, &a); simple_va_fun2(2, &a, &b); simple_va_fun2(3, &a, &b, &c); return 0; }
结果
[root@localhost workspace]# gcc t.c t.c: In function ‘simple_va_fun2’: t.c:26: warning: initialization makes pointer from integer without a cast [root@localhost workspace]# ./a.out num = 1 arg: 1 num = 2 arg: 1 arg: 2 num = 3 arg: 1 arg: 2 arg: 3 num = 1 arg: 1 num = 2 arg: 1 arg: 2 num = 3 arg: 1 arg: 2 arg: 3
相关文章推荐
- C++中注册表操作
- 学习笔记之深入浅出MFC 第8章 C++重要性质---异常处理(Exception Handing)
- windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- C++输入输出运算符重载(“>>”“<<”)
- C++实现一个按键精灵
- MOOC北京理工《C语言程序设计(上)》第5周第3题:求最小m值
- 成为C++高手之第一个程序
- C++11 多线程
- 【步兵 c++】 多态&虚函数
- C++11 正则表达式——实例3
- C++11 正则表达式——实例2
- 关于模板编程的一个例子 来自深度探索c++对象模型
- 编译原理词法分析
- C++11 正则表达式——实例1
- C++中的命名空间、using用法、区域运算符(::)详解
- C++11:匿名函数(lambda函数/表达式)及其用法
- 状态模式-c++实现
- 第五次程序设计作业 C++计算器雏形 调用文件输入输出
- Restore IP Addresses
- 用c++写一个简单的计算器程序