如何在c中从其指针设置结构成员

Com*_*PVT 0 c struct pointers

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

如果我按原样尝试,我会收到以下错误.

错误:在非结构或联合的东西中请求成员'avalue'

我理解错误,我不知道修复.我试过去引用:

*foo_item.avalue = 42;
Run Code Online (Sandbox Code Playgroud)

mel*_*ene 5

你的尝试几乎是正确的.但是,.avalue*你更紧密,所以你需要parens:

(*foo_item).avalue = 42;
Run Code Online (Sandbox Code Playgroud)

此操作非常常见,C为其提供了->简写语法:

foo_item->avalue = 42;  // same thing
Run Code Online (Sandbox Code Playgroud)