C/C++ 可变参数

#include 

// Java的可变参数:int...
// C++的可变参数写法:...
void sum(int count, ...) {
    va_list vp;

    va_start(vp, count);  // 获取参数列表的指针

    for (int i = 0; i < count; ++i) { // 依次获取每个参数
        int r = va_arg(vp, int);
        LOGI("%d", r)
    }

    va_end(vp);  // 结束参数列表的处理
}

int main() {

    sum(3, 7, 8, 9);

    return 0;
}

相比 java 而言,C/C++ 的可变参数在使用上就有点复杂,在方法上定义参数的时候直接用 ... 代表可变参数。

那在方法里面怎么使用呢?用 va_start 获取参数列表的指针,再用 va_arg 获取对应参数的值,获取完之后需要 va_end 去关闭指针。

在 java 中,如果数组或集合越界会抛出异常,但是 C/C++ 不会,会打印出系统值(乱码),所以在使用 C/C++ 中使用指针需要准确无误得去操作好指针,以免出现预知不到的错误

你可能感兴趣的:(C/C++基础,c++,c语言)