gpt4 book ai didi

c - 警告初始化使指针来自整数而不进行强制转换

转载 作者:行者123 更新时间:2023-11-30 19:45:31 26 4
gpt4 key购买 nike

当我尝试使用此测试我的代码时,我收到警告初始化使指针形式整数而不进行强制转换

#include <stdio.h>
#include <string.h>
#include "List.h"
#include "List.c"
int main()
{
int k;
// make list
ListP r = newlist();
//check if empty
k = isEmptyList(r);
if(k=0)
{
printf("this list is empty");
}
else
{
printf("List not empty");
}
//display
displayList(r);
//insert
insertItemList(r, "shuan");
//check if empty
k = isEmptyList(r);
if(k=0)
{
printf("this list is empty");
}
else
{
printf("List not empty");
}
//display
displayList(r);
return 0;
}

错误表明在 newList() 调用新列表函数的行中是

typedef struct List
{
struct Node* head;
int size;
}List;

typedef struct Node
{
char *info;
struct Node* next;
}Node;
typedef struct Node *NodeP;
typedef struct List *ListP;

//makes a list
ListP newList()
{
List *p;
ListP g;
p = (List*) malloc(sizeof(List));
if(p == NULL)
{
fprintf(stderr, "Memory allocation failed!\n");
exit(1);
};
p->size = 0;
p->head == NULL;
g = p;
return g;
};

这是否意味着该函数正在退出 1,因为 malloc 没有为列表分配内存并且语法不正确,或者代码是否存在其他问题?任何见解将不胜感激。

最佳答案

也许您还应该收到有关“未知”函数的警告。这意味着函数 newList 存在问题,并且编译器假定未知函数返回 int,并继续......

可能的原因:该函数名为 newList 但你使用了

ListP r = newlist();
^

您应该仔细检查是否包含正确的 header 、名称是否正确,以及函数在使用之前已声明。搜索区分大小写(grep 默认情况下区分大小写,因此类似

grep -r "newlist" .  // verify
grep -r "newList" . // again...

将工作)在您的项目根目录中的“newlist”和“newList”。你也不应该这样做

#include "List.c"

但仅

#include "List.h"

然后将比较 p->head == NULL; 更正为赋值 p->head = NULL;

关于c - 警告初始化使指针来自整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206647/

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