用C语言实现一个接受可变参数的函数

#include <stdio.h>

int add(int num, ...)
{
    int sum = 0;
    int index = 0;
    int *p = NULL;
    p = (int*)&num + 1;
    for(; index < num; ++index)
        sum += *p++;
    return sum;
}

int main()
{
    printf("%d\n", add(5, 1, 2, 3, 4, 5));    //15
    printf("%d\n", add(3, 1, 2, 3));          //6
    return 0;
}

注意:函数参数一般是从右向左压入栈的,栈空间内存是从高地址开始分配的。


你可能感兴趣的:(用C语言实现一个接受可变参数的函数)