2010-03-30 2 views
0

BIG EDIT:Пропустить динамическую структуру по ссылке? [C]

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

Моя структура выглядит следующим образом:

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

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

То есть у меня есть узел структуры * rootAges и узел структуры * rootNames. Мне нужно передать оба из них функции, которая добавляет элементы в список. Но мне также нужны корни для изменения, когда я добавляю вещи в список. методы, предоставленные до сих пор, не изменили значение 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); 
Смежные вопросы