无法在需要整数返回类型的函数中返回NULL

时间:2014-11-24 01:29:45

标签: c

警告:返回从指针生成整数而没有强制转换[默认情况下启用] 返回NULL;

我试图在我的功能中返回NULL,但它没有用完,我不明白为什么会这样。下面是我的代码,但我不会发布整个内容,因为我只遇到了return语句的问题。我希望你能理解。

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

typedef struct {
 int* data;
 unsigned int len;
} intarr_t;

int intarr_save_binary( intarr_t* ia, const char* filename )
{
    if(ia == NULL)
    {
        return NULL; // problem here, I want to return NULL if intarr_t*ia is null
    }
    else
    {
     // remaining code here, but is uncessary
     return 0;
     }
 }

我的最后一个问题是如何检查char数组文件名是否为NULL?

我会这样做:

if (filename == NULL)
{
     return NULL;
}

2 个答案:

答案 0 :(得分:1)

如果返回类型为int,则无法返回NULL。要显示错误,您可以返回一个特殊值,如零或-1,如果您在任何调用函数中检查该值。很多函数在成功时返回非负数,或者在错误时返回-1。

例如,

NULL不能存储在int变量中,与SQL不同。如果您忽略该警告并仍然返回NULL,那么NULL将被归为零。调用函数无法判断您是返回NULL还是零。

如果您的功能只需要指示成功或失败,那么通常会返回1表示成功,而0表示失败。零表示&#34;假&#34;当被视为布尔值时(如在if语句中),非零意味着&#34;为真。&#34;

答案 1 :(得分:1)

看起来你误解了NULL在C中的含义。类型不可为空。 NULL实际上只是值为0的指针的简写! int不是指针。