如何编写一个接受可变数量参数的函数?这可能吗,怎么做?
您可能不应该这样做,而且您可能可以以更安全、更简单的方式做您想做的事情。从技术上讲,要在 C 中使用可变数量的参数,您需要包含 stdarg.h。从中您将获得va_list类型以及对其进行操作的三个函数,称为va_start(),va_arg()和va_end()。
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<<()在流中)或默认参数等。这些都更安全:编译器会更多地了解您正在尝试做的事情,因此它可以在更多情况下停止在你把你的腿炸掉之前。
operator<<()