2010-03-30 68 views
0

BIG EDIT:通过引用传递动态结构? [C]

好吧,我原来的问题没有帮助我。这是第二次去。

我的结构是这样的:

struct node { 
    char *name; 
    int age; 
    struct node *nextName; 
    struct node *nextAge; 
}; 

我得把两个链表出这样的结构,。 所以我有'rootAges'来跟踪基于年龄的列表开始的位置,并且'rootNames'跟踪名称的起始位置。我似乎无法得到这些更新。

也就是说,我有struct node * rootAges和struct node * rootNames。 我需要将这两个都传递给一个将元素添加到列表的函数。 但我也需要根源来改变,因为我添加到列表中。 到目前为止提供的方法,例如在主函数中,当它在add函数中被更改时,并未改变rootAges的值。

谢谢!

回答

5

您的结构的实例的地址传递给接受C.

void fn(struct data *p) 
{ 
    if(p) 
    p->x = 33; 
} 

//... main ... 
struct data d; 
fn(&d); 
//d.x == 33 
1

传递指针的指针结构的功能。

例如:

typedef struct data{ int x;} s_data; 

void foo (s_data* pointer){} 

s_data s={0}; 
foo(&s); 
0

宣言

void Foo(struct data *); 

定义

void Foo(struct data *p) 
{ 
//body 
} 

在你的代码

Foo(root);