【发布时间】:2021-04-03 15:49:52
【问题描述】:
您好,我想将一个结构传递给一个可变参数函数并在 C 中使用所述结构内的值。我不知道该怎么做是如何访问每个传递的结构的内容。
这是一个例子
typedef struct {
int num;
bool dontIncludeFlag;
} number;
int average(unsigned count, ...){
va_list ap;
int j;
int sum = 0;
va_start(ap, count);
for (j = 0; j < count; j++) {
if(va_arg(ap,number.dontIncludeFlag)) //This line does not work
sum += va_arg(ap.num, number); //so does this line
}
va_end(ap);
return sum / count;
}
int main(){
number a,b,c;
a.num= 5;
a.dontIncludeFlag = 0;
b.num= 2;
b.dontIncludeFlag= 1;
c.num= 1;
c.dontIncludeFlag= 0;
average(3,a,b,c);
}
如何访问我传递的结构参数的内容
【问题讨论】:
-
网上应该有不少关于如何使用可变参数函数的教程。他们都应该指出
va_arg“函数”(它实际上是一个宏)将接受一个type作为参数,并获得下一个whole参数。您不能使用va_arg获取参数的一部分(如结构的一部分)。 -
这能回答你的问题吗? An example of use of varargs in C
-
@Someprogrammerdude 你实际上带领我解决了这个问题,遗憾的是我正在阅读的那个没有提到任何这些。所以我是如何解决这个问题的,我在 for 循环中创建了一个临时结构变量
number temp = va_arg(ap,number),然后在公园里散步,用if(temp.dontIncludeFlag == 0)和sum+= temp.num;替换两条有问题的行。如果您想发布一个答案好先生,请接受它以便您可以加分 -
@NikosAthanasiou 实际上没有,我的问题是访问在可变参数函数内部传递的结构。一些程序员老兄居然给了我解决问题的必要信息
标签: c variadic-functions variadic