- /*=========================================
- 功能描述:把传给变参函数的变参参数打印出来
- 所用函数:para_transfer(),para_change()
- 返回值: 两个函数都无返回值
- =========================================*/
- #include <stdio.h>
- #include <stdarg.h>
- /* 定义用于传递变参函数参数的函数para_transfer() */
- void para_transfer(va_list trans)
- {
- int arg;
- trans=(int*)trans-sizeof(va_list)+1;
- arg=va_arg(trans,int);
- printf("trans=%d\n",arg);
- }
- /* 定义变参函数para_change() */
- void para_change(int a,...)
- {
- int arg;
- va_list ap; /* 声明指向变参函数参数的指针ap,该指针类型由变参参数的类型确定 */
- va_start(ap,a); /* 定义指针ap指向参数a后面未列出变参参数的地址 */
- ap=(int*)ap-sizeof(va_list)+1; /* 使指针ap指向参数a的起始地址 */
- for(;a>0;a--)
- {
- arg=va_arg(ap,int);
- printf("\nchange=%d\n",arg);
- para_transfer(ap); /* 调用用于传递变参参数的函数 */
- }
- va_end(ap); /* 结束变参解析 */
- para_transfer(ap); /* 再次调用 */
- }
- /* 主函数 */
- main()
- {
- para_change(7,3,5,6,3,89,89,...);
- getch();
- }