如何在C中将结构传递给可变参数函数并对其进行访问

sgtfey8w  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(152)

你好,我想传递一个结构体到一个可变函数,并在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);
}

如何访问传递的结构参数的内容

4xrmg8kj

4xrmg8kj1#

代码错误地使用了va_arg。使用它将可变参数赋给变量,然后访问成员。

number n;
    for (j = 0; j < count; j++) {
        n = va_arg(ap, number);
        if(n.dontIncludeFlag)
            sum += va_arg(ap.num, number);
    }

相关问题