2010-03-30 63 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);