美文网首页
C/C++中的可变参数函数

C/C++中的可变参数函数

作者: Jack_Cui | 来源:发表于2019-03-04 14:49 被阅读0次
    • 在C/C++里面,“函数可变参”在某些时候是很有用的,比如说再输出日志或者计算一些不清楚数目的数字的和。

    • 首先就是要用到的头文件

      #include<stdarg.h>

    • 要用到下面几个类型和方法:

      • va_list
        typedef char * va_list; //就是个指针
      • va_start
        va_start(ap,v) //将ap指向v之后的位置
      • va_arg
        va_arg(ap,t) // 取出ap的值,并将ap指向下一个位置。t就是类型,可以是int,double等等
      • va_end
        va_end(ap) //// 置空
    • 附上源码

      #include <iostream>
      #include <stdarg.h>
      #include <stdio.h>

      int sum(int n, ...)
      {
        va_list arg_ptr;
        int i = 0, nRes = 0;
        va_start(arg_ptr, n);
        for(; i < n; ++i)
        {
          int temp = va_arg(arg_ptr, int);
          nRes += temp;
        }
        va_end(arg_ptr);
        return nRes;
      }

      void myPrintf(const char *strFormat, ...)
      {
        if(NULL==strFormat) return;
        va_list arg_ptr;
        va_start(arg_ptr, strFormat);
        char strInfo[1000] = {0}; // 小心别溢出?
        vsprintf(strInfo, strFormat, arg_ptr); // 按格式打印到strInfo,功能类似sprintf
        fputs(strInfo, stdout);
        va_end(arg_ptr);
      }

      int main()
      {
        myPrintf("%s %d\n","the result is ", sum(4, 45, 15, 45, 100));
        return 0;
      }

    相关文章

      网友评论

          本文标题:C/C++中的可变参数函数

          本文链接:https://www.haomeiwen.com/subject/trkiuqtx.html