[英]Assignment from incompatible pointer type when using Linked Lists
我試圖使用一個簡單的鏈接列表示例,以期了解使用它們的基本思想,以備后用。 但是,我對如何將列表中的每個節點設置為某個值感到困惑。 即在這里,我想將成員“ a”設置為“ b”的地址,並將成員“ b”設置為c的地址。 但是,這是發生警告的地方,
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
struct List
{
int data;
struct List * next;
};
int main (int argc, char * argv[])
{
struct List * a = malloc(sizeof(struct List));
a->data = 0;
a->next = NULL;
struct List * b = malloc(sizeof(struct List));
b->data = 1;
b->next = NULL;
struct List * c = malloc(sizeof(struct List));
c->data = 2;
c->next = NULL;
a->next = &b; //warning occurs here
b->next = &c;
}
有沒有一種方法可以設置a-> next(a.next)和b-> next(b.next)的值而不發出任何警告?
a->next
的類型為struct List *
。
b
是struct List *
類型。
&b
的類型為struct List **
。
您可能打算這樣做: a->next = b;
b
已經是一個指向struct List
的指針,因此您不需要&
運算符。
做就是了:
a->next = b;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.