Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257950
  • 博文数量: 49
  • 博客积分: 1231
  • 博客等级: 少尉
  • 技术积分: 967
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-02 00:04
个人简介

-->软硬件结合的系统级开发工程师,带过团队,爱好心理学,哲学,艺术...偶像:达芬奇

文章存档

2014年(2)

2013年(4)

2012年(15)

2011年(28)

分类: C/C++

2011-06-26 19:40:42

  1. /*=========================================
  2. 功能描述:把传给变参函数的变参参数打印出来
  3. 所用函数:para_transfer(),para_change()
  4. 返回值: 两个函数都无返回值
  5. =========================================*/

  6. #include <stdio.h>
  7. #include <stdarg.h>

  8. /* 定义用于传递变参函数参数的函数para_transfer() */
  9. void para_transfer(va_list trans)
  10. {
  11.     int arg;

  12.     trans=(int*)trans-sizeof(va_list)+1;
  13.     arg=va_arg(trans,int);
  14.     printf("trans=%d\n",arg);
  15. }

  16. /* 定义变参函数para_change() */
  17. void para_change(int a,...)
  18. {
  19.     int arg;
  20.     va_list ap; /* 声明指向变参函数参数的指针ap,该指针类型由变参参数的类型确定 */

  21.     va_start(ap,a); /* 定义指针ap指向参数a后面未列出变参参数的地址 */
  22.     ap=(int*)ap-sizeof(va_list)+1; /* 使指针ap指向参数a的起始地址 */
  23.     for(;a>0;a--)
  24.     {
  25.         arg=va_arg(ap,int);
  26.         printf("\nchange=%d\n",arg);
  27.         para_transfer(ap); /* 调用用于传递变参参数的函数 */
  28.     }
  29.     va_end(ap); /* 结束变参解析 */

  30.     para_transfer(ap); /* 再次调用 */

  31. }

  32. /* 主函数 */
  33. main()
  34. {
  35.     para_change(7,3,5,6,3,89,89,...);
  36.     getch();
  37. }
阅读(686) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~