如何使用指针指向C中的结构?

时间:2008-12-06 20:28:51

标签: c struct pointer-to-pointer

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

示例代码

typedef struct {
    int member;
} Ttype;

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

4 个答案:

答案 0 :(得分:23)

尝试

(*foo)->member = 1;

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

答案 1 :(得分:7)

由于运算符优先级,您需要在括号内加上括号:

(*foo)->member = 1;

答案 2 :(得分:3)

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

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

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

void changeMember(Ttype *&foo) {
   foo->member = 1;
}

答案 3 :(得分:1)

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