2016-04-23 8 views
0

私の質問は、リスト構造体のノード構造体のnum変数にどうやってアクセスするのですか?私は2つの方法を試してみて、どちらも仕事をしなかったのですか?私はちょうどそれがなぜであるか興味がある。私はこれが初心者の質問であることを知っている人に感謝します。私はかなり新しい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ためのメモリを割り当てられているものの、何のメモリがlist内に存在するnodeのために割り当てられていないということです。

list *p = malloc(sizeof(list)); 
    //p->ptr->num = 5; 
    node *x; 
    p->ptr = malloc(sizeof(node)); 
    x = p->ptr; 
    x->num = 5; 
関連する問題