Передать динамическую структуру по ссылке? [С] - PullRequest
0 голосов
/ 30 марта 2010

БОЛЬШОЕ РЕДАКТИРОВАНИЕ:

Хорошо, мой оригинальный вопрос мне не помог. Вот второй ход.

Моя структура выглядит так:

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

Я должен сделать два связанных списка из структур, подобных этой. Так что у меня есть «rootAges», который отслеживает, где начинается список на основе возраста и «rootNames», который отслеживает, где начинаются имена. Кажется, я не могу их обновить.

то есть у меня есть struct node * rootAges и struct node * rootNames. Мне нужно передать оба из них в функцию, которая добавляет элементы в список. Но мне также нужно, чтобы корни менялись по мере добавления вещей в список. методы, предоставленные до сих пор, не изменили значение rootAges, например, в основной функции, когда оно изменяется в функции добавления.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 30 марта 2010

Вы передаете адрес экземпляра структуры в функцию, которая принимает указатель в C.

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

//... main ...
struct data d;
fn(&d);
//d.x == 33
1 голос
/ 30 марта 2010

Передать указатель на структуру.

Например:

typedef struct data{ int x;} s_data;

void foo (s_data* pointer){}

s_data s={0};
foo(&s);
0 голосов
/ 30 марта 2010

Декларация

void Foo(struct data *);

Определение

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

В вашем коде

Foo(root);
...