变参函数学习笔记!

719阅读 0评论2011-06-26 awool_cu
分类:C/C++

  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. }
上一篇:用开根号的办法查找1000以内的素数!
下一篇:字符串倒序显示!