传递可变数量的参数

发布于 2024-09-26 00:05:46 字数 31 浏览 4 评论 0原文

我们可以将可变数量的参数传递给 c 中的函数吗?

Can we pass variable number of arguments to a function in c?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

你列表最软的妹 2024-10-03 00:05:46

这里是一个示例:

#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>

int maxof(int, ...) ;
void f(void);

int main(void){
        f();
        exit(EXIT SUCCESS);
}

int maxof(int n_args, ...){
        register int i;
        int max, a;
        va_list ap;

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

        va_end(ap);
        return max;
}

void f(void) {
        int i = 5;
        int j[256];
        j[42] = 24;
        printf("%d\n", maxof(3, i, j[42], 0));
}

Here is an example:

#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>

int maxof(int, ...) ;
void f(void);

int main(void){
        f();
        exit(EXIT SUCCESS);
}

int maxof(int n_args, ...){
        register int i;
        int max, a;
        va_list ap;

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

        va_end(ap);
        return max;
}

void f(void) {
        int i = 5;
        int j[256];
        j[42] = 24;
        printf("%d\n", maxof(3, i, j[42], 0));
}
柠檬 2024-10-03 00:05:46

是的,如果函数接受可变参数。如果您需要创建自己的变量参数函数,可以使用以 va_ 开头的宏来访问参数。

Yes, if the function accepts variable arguments. If you need to make your own variable-argument function, there are macros that begin with va_ which give you access to the arguments.

凌乱心跳 2024-10-03 00:05:46

确保变量参数列表应始终位于参数列表的末尾

示例:void func(float a, int b, ...) 是正确的,

void func(float a , ..., int b) 无效

make sure that the variable argument list should always be at the end of the argument list

example: void func(float a, int b, ...) is correct

but void func(float a, ..., int b) is not valid

趴在窗边数星星i 2024-10-03 00:05:46

“你应该考虑到使用可变参数函数(C 风格)是一个危险的缺陷,”Stephane Rolland 说。您可以在此处<找到他的有用帖子< /a>.

"You should consider that using variadic functions (C-style) is a dangerous flaw," says Stephane Rolland. You can find his helpful post here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文