警告:返回从指针生成整数而没有强制转换[默认情况下启用] 返回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;
}
答案 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
不是指针。