2016-04-23 144 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'指定一个'node'指向,然后设置'p'指向该节点。只有这样你才能开始访问该值。所以,'p-> ptr = x;'比反向赋值更合理,但你仍然需要连接所有的点。 –

回答

1

是你所试图做的是正确的,但问题是,虽然你已经为list分配的内存,没有分配内存驻留内listnode

list *p = malloc(sizeof(list)); 
    //p->ptr->num = 5; 
    node *x; 
    p->ptr = malloc(sizeof(node)); 
    x = p->ptr; 
    x->num = 5;