当我尝试使用此
测试我的代码时,我收到警告初始化使指针形成整数而没有强制转换#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不为列表分配内存,而且语法不正确或者代码是否存在其他问题?任何见解将不胜感激。
答案 0 :(得分:0)
也许你应该得到关于&#39; unknown&#39;的警告。功能。这意味着函数newList
存在问题,编译器假定未知函数返回int,并继续...
可能的原因:该函数名为newList,但您使用
ListP r = newlist();
^
您应该仔细检查是否包含正确的标题且名称是否正确,以及在之前声明该功能。搜索区分大小写(默认情况下grep区分大小写,如
grep -r "newlist" . // verify
grep -r "newList" . // again...
将在您的项目根目录中工作)&#34; newlist&#34; &安培; for&#34; newList&#34;。你也不应该
#include "List.c"
但仅
#include "List.h"
然后更正比较p->head == NULL;
与作业p->head = NULL;