c - 使用链表时从不兼容的指针类型赋值

标签 c pointers struct linked-list

我正在尝试使用一个简单的链表示例,试图理解使用它们背后的基本思想,以备后用。但是,我对如何将列表中的每个节点设置为特定值感到困惑。即在这里,我想将成员“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->nextstruct List * 类型。

bstruct List * 类型。

&bstruct List ** 类型。

您可能打算这样做:a->next = b;

关于c - 使用链表时从不兼容的指针类型赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29111565/

相关文章:

c++ - Windows 64 位结构大小随包含的数据类型而变化?

c - pop函数链表,glibc检测到double free or corruption

c - 格式化答案以正确使用 C 中的有效数字位数

c - 对于数组,为什么会出现a [5] == 5 [a]?

c - 为指针分配内存

c++ - 为类 std::vector<> 的结构成员重载 operator=

c - 我正在尝试用 c 和套接字制作一个简单的聊天程序。当我在几件事之后运行它时,它说程序接收到信号 EXC_BAD_ACCESS

c++ - 为函数定义 typedef,该函数返回指向与其自身类似的函数的函数指针

pointers - 为什么Go允许将接口(interface)变量分配给未实现值接收者的值?

c - 将循环计数器字符串化以引用 C 结构体的成员