gpt4 book ai didi

c - 当我使用 malloc 函数时,我不断收到错误

转载 作者:行者123 更新时间:2023-11-30 20:27:06 26 4
gpt4 key购买 nike

            #include <stdio.h>
#include <stdlib.h>


struct node
{
int val;
node * p_next;
};

int main(void)
{
node *test;

为节点指针分配正确数量的字节。

                test = malloc( sizeof(node) );
test->val = 123;
test->p_next = NULL;

printf("%d %p %p\n",test->val,test,test->p_next );

free(test);

printf("Press enter to continue.... \n");
getchar();

return 0;
}

然后我得到这个错误,我不明白为什么我应该得到即使我给出了节点指针的类型。

error: invalid conversion from 'void*' to 'node*' [-fpermissive]
test = malloc( sizeof(node) );
^

最佳答案

您正在使用 C++ 编译器进行编译。这可以从错误消息中推断出来。在 C 中赋值 void* 是有效的。 ,由 malloc 返回, 到一个非 void 指针变量。但这在 C++ 中是无效的。因此你的编译器是 C++ 编译器。

如果您确实打算编写 C,那么您将需要使用 C 编译器。

当您切换到 C 编译器时,您需要将该结构体引用为 struct node或者使用 typedef 来引用它,就像 node .

typedef struct node node;
struct node
{
int val;
node *p_next;
};

您当前的代码接受普通 node 的原因如果没有 typedef,则说明您正在使用 C++ 编译器进行编译。

关于c - 当我使用 malloc 函数时,我不断收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21999607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com