如果使用函数的地址将结构类型传递给函数,如何设置结构中的成员?

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

typedef struct foo {int avalue} foo_t;

void setmember(foo_t *foo_item){
    foo_item.avalue = 42;
}

int main(void) {
    foo_t dafoo;
    setmember(&dafoo);
    printf("%d\n", dafoo.avalue);
    return 0;
}

如果我按原样尝试,会得到以下错误。
错误:在非结构或联盟中请求成员“avlaue”
我明白错误,我不知道该怎么解决。我试过去引用:
*foo_item.avalue = 42;

最佳答案

你的尝试几乎是正确的。.avalue绑定比*更紧密,因此您需要parens:

(*foo_item).avalue = 42;

此操作非常常见,C为其提供了->简写语法:
foo_item->avalue = 42;  // same thing

关于c - 如何在C中从其指针设置结构成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32671811/

10-11 15:53