2016-11-13 13 views
0

リンクされたリストを扱っていますが、リンクされたリストの次の要素に移動する際に問題があります。私が手にエラーがある:あなたの助けのためのリンクされたリストの次の要素に移動しようとするとエラーが発生する

typedef struct item 
{ 
    float size; 
    struct item *next; 
} item; 

item head, curr, tail; 

...

head.next = (item*) malloc(sizeof(item)); 
curr = head.next; 

ありがとう:ここerror: incompatible types when assigning to type 'item' from type 'struct item *

はコードです。

答えて

1
この代入文で

curr = head.next; 

currhead.nextitem *を入力している間itemを入力しています。これは最初のものが構造体オブジェクトであり、2番目のものがポインタです。それらは互換性がありません。

したがって、コンパイラはエラーを発行します。

あなたはあなたの説明に基づいて、ポインタ

item *curr; 
0

のような変数currを宣言する必要があり、あなたはcurrリンクリストの次のノードを作りたいです(?)。

この場合、currというメモリ方向をhead.nextに割り当てる必要があります。 (メモリアドレスがちょうどarbitraries番号です)、今

item head, curr; // declaration of variables 

head.size = 8; 
curr.size = 5; 

head.next = &curr; // making 'curr' the next node 

をメモリに、あなたはこのようなものを持っています:?どのように、あなたが求めることができる

Memory example

を:ポインタがメモリを保ちますアドレス。そのため、戻り値にmalloc()を割り当て、使用可能な「メモリチャンク」のメモリ方向を指定した長さで指定します。

関連する問題