2016-04-23 3 views
0

Мой вопрос в том, как получить доступ к переменной num в структуре узла структуры списка? Я пробовал два пути, и оба они не работали? Мне просто интересно, почему это так. Спасибо всем, кто помогает мне знать, что это новичок. Я довольно новичок в переполнении c и стека, надеюсь, я могу многому научиться на этом веб-сайте.вложенные структуры/связанные списки в c

#include<stdio.h> 
#include<stdlib.h> 

typedef struct node 
{ 
    int num; 
    struct node *next; 
} node; 

typedef struct list 
{ 
    node *ptr; 
    struct list *next; 
} list; 

int main() 
{ 
    list *p = malloc(sizeof(list)); 
    //p->ptr->num = 5; 

    node *x; 
    x = p->ptr; 
    //x->num = 5; 

    return 0; 
} 
+2

Список не содержит указателей на узлы, пока вы их не добавите. Вам нужно будет выделить «узел» для 'x', чтобы указать, а затем установить' p', чтобы указать на узел. Только после этого вы можете начать доступ к значению. Итак, 'p-> ptr = x;' более правдоподобно, чем обратное присваивание, но вам все равно нужно соединить все точки. –

ответ

1

То, что вы пытаетесь сделать, это правильно, но проблема в том, что если бы вы выделили память для list, память не выделяется для node проживающих внутри list.

list *p = malloc(sizeof(list)); 
    //p->ptr->num = 5; 
    node *x; 
    p->ptr = malloc(sizeof(node)); 
    x = p->ptr; 
    x->num = 5; 
Смежные вопросы