繁体   English   中英

指针和整数警告之间的比较

[英]Comparison between pointer and integer warning

当我尝试比较指针数组(最初为NULL)和char指针时:

int main(int argc, char **argv){   

    char **list = (char**)malloc(20*sizeof(char)+1);
    char *input = "La li lu le lo";


    if(*list[0] != input[0]) { //or if(list[0][0]!=input[0])
        printf("false: %s", strdict[0]);
    }
}

我不断收到警告:

指针和整数之间的比较

必须采取什么措施才能消除此警告? 如果我将其修改为:

if(*list[0] != input[0])

警告已删除,但程序崩溃。 感谢您的帮助。

input[0]的类型为charlist[0]的类型为char* 如果您想比较字符串,请使用strcmp()

但是malloc()不正确,并且list内容未初始化。 认为 ,基于其名称和类型, list旨在成为char*的列表:

/* No need to cast return value of malloc(). */
char **list = malloc(20 * sizeof(char*));

然后,每个元素都是char* ,需要设置为一些char* ,可能还需要设置malloc() d:

list[0] = malloc(20); 
/* Populate list[0] with some characters. */

/* Compare to input. */
if (0 == strcmp(list[0], input))
{
    /* Strings equal. */
}

似乎您正在将整数与数组进行比较,因为List前面有两个星星。 Input [0]是一个字符,而List [0]是一个数组,如果查看List [0] [0],则将比较两个等效的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM