初始化使得指针来自整数而没有强制转换和指针与整数之间的比较

时间:2012-05-09 11:42:56

标签: c pointers null

我的代码片段包含(36和37是行号):

36     char* colon_unit = extract_colon_unit( zPath, path, &p_index);
37     if (colon_unit == NULL)

在编译期间,我收到警告:

  

a.c:36:警告:初始化从没有强制转换的整数生成指针

当我删除指针时,

char colon_unit = extract_colon_unit( zPath, path, &p_index );

它显示:

  

a.c:37:警告:指针和整数之间的比较

我该如何解决?

1 个答案:

答案 0 :(得分:2)

这意味着函数extract_colo_unit()返回一个字符(char)而不是字符指针(char*)。当您将colon_unit的数据类型更改为char时,您将不会收到第一个错误,因为现在变量和赋值的值都具有相同的类型。

但是当你将colon_unit与NULL进行比较时,你会将一个字符(即colon_unit)与一个指针进行比较。也就是说,NULL定义为(void*)0,因此您在第37行得到第二个错误。

解决方案完全取决于您的逻辑以及从此函数返回NULL的含义。但如果是错误情况或没有有效值的情况,它只返回0而不是NULL,并在第37行中与0进行比较。