16

我想在双指针下更改结构的成员。你知不知道怎么?

示例代码

typedef struct {
    int member;
} Ttype;

void changeMember(Ttype **foo) {
   //I don`t know how to do it
   //maybe
   *foo->member = 1;
}
4

4 回答 4

31

尝试

(*foo)->member = 1;

您需要先明确使用 *。否则,这是取消引用成员的尝试。

于 2008-12-06T20:33:53.523 回答
10

由于运算符优先级,您需要将括号括起来:

(*foo)->member = 1;
于 2008-12-06T20:34:09.607 回答
3

您可以使用临时变量来提高可读性。例如:

Ttype *temp = *foo;
temp->member = 1;

如果您对此有控制权并允许使用 C++,则更好的方法是使用引用。例如:

void changeMember(Ttype *&foo) {
   foo->member = 1;
}
于 2008-12-06T20:59:41.160 回答
1

也许 (*foo)->member = 1 (如果它是动态分配的)

于 2008-12-06T20:33:44.067 回答