小编典典

C ++中可变数量的参数?

all

如何编写一个接受可变数量参数的函数?这可能吗,怎么做?


阅读 68

收藏
2022-03-31

共1个答案

小编典典

您可能不应该这样做,而且您可能可以以更安全、更简单的方式做您想做的事情。从技术上讲,要在 C 中使用可变数量的参数,您需要包含
stdarg.h。从中您将获得va_list类型以及对其进行操作的三个函数,称为va_start(),va_arg()va_end()

#include<stdarg.h>

int maxof(int n_args, ...)
{
    va_list ap;
    va_start(ap, n_args);
    int max = va_arg(ap, int);
    for(int i = 2; i <= n_args; i++) {
        int a = va_arg(ap, int);
        if(a > max) max = a;
    }
    va_end(ap);
    return max;
}

如果你问我,这是一团糟。它看起来很糟糕,不安全,并且充满了与您在概念上试图实现的目标无关的技术细节。相反,请考虑使用重载或继承/多态性、构建器模式(如operator<<()在流中)或默认参数等。这些都更安全:编译器会更多地了解您正在尝试做的事情,因此它可以在更多情况下停止在你把你的腿炸掉之前。

2022-03-31