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
    包含什么内容?错误消息和它发出的代码行不是说明了一切吗?