gpt4 book ai didi

c - 将可变数量的参数传递给 C 函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:23 25 4
gpt4 key购买 nike

我正在探索在 C 中使用可变参数,使用 GNU(在 Code::Blocks 中)。当我执行以下代码时:

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

void VarargsTest(int n_args, ...)
{
int i, arg;
va_list ap;

fprintf(stderr, "N_args is %d\n", n_args);
va_start(ap, n_args);
for(i= 0; i < n_args; i++)
{
arg= va_arg(ap, int);
fprintf(stderr, "arg %d is %d\n", i, arg);
}
va_end(ap);
}

int main()
{
VarargsTest(1,2,3,4,5,6,5,4,3,2,1);
return 0;
}

我得到以下结果:

N_args is 1
arg 0 is 2

即参数数量 (11) 未正确报告给 VarargsTest 函数,甚至它看到的唯一参数也不正确。有什么想法吗?

最佳答案

您的函数期望传递给函数的第一个参数是传递给函数的可变参数的数量。由于您为此值传入 1,因此它只会查看超过所需参数的一个参数。

如果你想让它读取所有参数,第一个值应该是 10,因为你有一个必需参数和 10 个可选参数。

关于c - 将可变数量的参数传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31252127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com