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

时间:2010-03-30 15:06:35

标签: c data-structures pass-by-reference

BIG EDIT:

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

我的结构看起来像这样:

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

我必须用这样的结构制作两个链表。 所以我有'rootAges'来跟踪基于年龄的列表的开始和位置 'rootNames'跟踪名称的起始位置。我似乎无法更新这些内容。

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

谢谢!

3 个答案:

答案 0 :(得分:5)

将结构实例的地址传递给接受C中指针的函数。

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

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

答案 1 :(得分:1)

将指针传递给结构。

例如:

typedef struct data{ int x;} s_data;

void foo (s_data* pointer){}

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

答案 2 :(得分:0)

声明

void Foo(struct data *);

定义

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

在您的代码中

Foo(root);