欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝情趣用品保密吗 编辑:程序博客网 时间:2024/06/16 01:19

va_list


读《windows程序设计》的时候对va_list这个类型的使用不是特别理解,查MSDN得到的了与它关联的几个宏“va_arg, va_end, va_start“。之后自己简单实验了一下。

#include <stdarg.h>int SumInt(int, ...);int main(){    int a = 9;    int b = 8;    int c = 7;    int iResult = 0;    iResult = SumInt(3, a, b, c);    return iResult;}int SumInt(int iNum, ...){    int iSum = 0;    va_list ptr;    va_start(ptr, iNum);    for (int i = iNum; i > 0; i--)    {        iSum += va_arg(ptr, int);    }    va_end(ptr);    return iSum;}

程序中定义了一个参数可变的函数SumInt,第一个参数是求和整数的个数,后面的参数是要参与求和的整数。va_list实际上是个指针,调用va_start()之后va_list就指向了SumInt()的第二个参数。而va_arg()能获得这个参数并把指针往后移,指向第三个参数。运行结束后va_end()释放指针。

0 0