C “如何解决错误”;赋值从指针生成整数,不带强制转换“;?
下面是一段代码:我想知道我的错误在哪里? 我有一个名为C “如何解决错误”;赋值从指针生成整数,不带强制转换“;?,c,linked-list,warnings,dev-c++,C,Linked List,Warnings,Dev C++,下面是一段代码:我想知道我的错误在哪里? 我有一个名为country的结构,用于处理链接列表,以下是我的搜索功能: country *search(char *v) { country *c; c=head; while(c) { if(strcmp(c->name,v)==0) {return c;} c=c->next; if(c==head) break;}
country
的结构,用于处理链接列表,以下是我的搜索功能:
country *search(char *v)
{
country *c; c=head;
while(c)
{
if(strcmp(c->name,v)==0)
{return c;}
c=c->next;
if(c==head) break;}
return (void *)-1;}
在main
中,我有(k
是int
变量):
<>在DEVC++中编译时,得到:
[Warning] assignment makes integer from pointer without a cast [enabled by default]
如何解决此问题?需要解决两个问题:
search
的返回值:
country *search(char *v)
{
country *c; c=head;
while(c)
{
if(strcmp(c->name,v)==0)
{
return c;
}
c=c->next;
if(c==head) break;
}
// Don't use -1 as an invalid search.
// Use NULL instead.
// return (void *)-1;
return NULL;
}
search
的返回值
// Don't use k, which is of type int.
// Use a variable of the right type.
// k = search(v);
country* cPtr = search(v);
if( cPtr )
{
puts("\n\t Info about Country: \n ");
}
有两件事需要解决:
search
的返回值:
country *search(char *v)
{
country *c; c=head;
while(c)
{
if(strcmp(c->name,v)==0)
{
return c;
}
c=c->next;
if(c==head) break;
}
// Don't use -1 as an invalid search.
// Use NULL instead.
// return (void *)-1;
return NULL;
}
search
的返回值
// Don't use k, which is of type int.
// Use a variable of the right type.
// k = search(v);
country* cPtr = search(v);
if( cPtr )
{
puts("\n\t Info about Country: \n ");
}
有两件事需要解决:
search
的返回值:
country *search(char *v)
{
country *c; c=head;
while(c)
{
if(strcmp(c->name,v)==0)
{
return c;
}
c=c->next;
if(c==head) break;
}
// Don't use -1 as an invalid search.
// Use NULL instead.
// return (void *)-1;
return NULL;
}
search
的返回值
// Don't use k, which is of type int.
// Use a variable of the right type.
// k = search(v);
country* cPtr = search(v);
if( cPtr )
{
puts("\n\t Info about Country: \n ");
}
有两件事需要解决:
search
的返回值:
country *search(char *v)
{
country *c; c=head;
while(c)
{
if(strcmp(c->name,v)==0)
{
return c;
}
c=c->next;
if(c==head) break;
}
// Don't use -1 as an invalid search.
// Use NULL instead.
// return (void *)-1;
return NULL;
}
search
的返回值
// Don't use k, which is of type int.
// Use a variable of the right type.
// k = search(v);
country* cPtr = search(v);
if( cPtr )
{
puts("\n\t Info about Country: \n ");
}
不要将
search
的返回值赋给int
类型的变量,而是创建一个country*
类型的变量,并将search
的返回值赋给该变量。请学习使用更正统的代码布局;您的代码片段几乎不可读,而且很难理解,因为布局非常特别,尤其是第一个片段。另外,要注意和。正如@RSahu所说,您的函数search()
被声明为返回一个country*
,因此将其结果分配给k
,一个int
,肯定会给出错误。当不缺少的返回类型是指针时,为缺少的值返回0或NULL。返回(void*)-1
是一种常规(尽管并非没有标准化的先例)。运行k=search(v)后,您希望k
包含什么
?错误消息及其发出的代码行不是说明了一切吗?与其将search
的返回值分配给int
类型的变量,不如创建一个country*
类型的变量,并将search
的返回值分配给该变量。请学习使用更正统的代码布局;您的代码片段几乎不可读,而且很难理解,因为布局非常特别,尤其是第一个片段。另外,要注意和。正如@RSahu所说,您的函数search()
被声明为返回一个country*
,因此将其结果分配给k
,一个int
,肯定会给出错误。当不缺少的返回类型是指针时,为缺少的值返回0或NULL。返回(void*)-1
是一种常规(尽管并非没有标准化的先例)。运行k=search(v)后,您希望k
包含什么
?错误消息及其发出的代码行不是说明了一切吗?与其将search
的返回值分配给int
类型的变量,不如创建一个country*
类型的变量,并将search
的返回值分配给该变量。请学习使用更正统的代码布局;您的代码片段几乎不可读,而且很难理解,因为布局非常特别,尤其是第一个片段。另外,要注意和。正如@RSahu所说,您的函数search()
被声明为返回一个country*
,因此将其结果分配给k
,一个int
,肯定会给出错误。当不缺少的返回类型是指针时,为缺少的值返回0或NULL。返回(void*)-1
是一种常规(尽管并非没有标准化的先例)。运行k=search(v)后,您希望k
包含什么
?错误消息及其发出的代码行不是说明了一切吗?与其将search
的返回值分配给int
类型的变量,不如创建一个country*
类型的变量,并将search
的返回值分配给该变量。请学习使用更正统的代码布局;您的代码片段几乎不可读,而且很难理解,因为布局非常特别,尤其是第一个片段。另外,要注意和。正如@RSahu所说,您的函数search()
被声明为返回一个country*
,因此将其结果分配给k
,一个int
,肯定会给出错误。当不缺少的返回类型是指针时,为缺少的值返回0或NULL。返回(void*)-1
是一种常规(尽管并非没有标准化的先例)。运行k=search(v)
后,您希望k
包含什么内容?错误消息和它发出的代码行不是说明了一切吗?