簡體   English   中英

使用鏈接列表時從不兼容的指針類型進行分配

[英]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 *

bstruct List *類型。

&b的類型為struct List **

您可能打算這樣做: a->next = b;

b已經是一個指向struct List的指針,因此您不需要&運算符。

做就是了:

a->next = b;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM