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

问题描述:

我想改变双指针结构的成员。你知不知道怎么?如何使用C指针指向结构的指针?

示例代码

typedef struct { 
    int member; 
} Ttype; 

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

尝试

(*foo)->member = 1; 

你需要明确使用*第一。否则,这是试图解除引用成员。

+0

一个疑问的例子:如果changeMember()函数是在类库中创建的,我需要在我的控制台应用程序中访问它,应该如何完成? :@Jonathan Leffler – TechBrkTru 2015-06-04 07:34:27

也许(* FOO) - >成员= 1(如果它的动态分配)

+0

没有也许 - 但动态分配并不重要。 – 2008-12-08 01:35:36

由于运算符优先级,你需要把解决此括号:

(*foo)->member = 1; 

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

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

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

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