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

C 指针和整数警告之间的比较,c,C,当我尝试比较指针数组(最初为NULL)和字符指针时: 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", strdic

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

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])
警告被删除,但程序崩溃。
提前感谢您的帮助。

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

似乎您正在将整数与数组进行比较,因为列表前面有两颗星。输入[0]是一个字符,而列表[0]是一个数组,如果您查看列表[0][0],那么您将比较两个等效对象。

输入[0]的类型是一个
字符,而
列表[0]
的类型是一个
字符*
。如果要比较字符串,请使用

但是,
malloc()
不正确,并且
列表
内容未初始化。我认为,根据其名称和类型,
list
是一个字符列表*

/* 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. */
}

input[0]
的类型是
char
,而
list[0]
的类型是
char*
。如果要比较字符串,请使用

但是,
malloc()
不正确,并且
列表
内容未初始化。我认为,根据其名称和类型,
list
是一个字符列表*:

/* 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. */
}

定义“无法运行”。它不编译吗?它崩溃了?它说“False:…”?好的,1)删除malloc
cast
并关闭
.2)您正在比较
char*
列表[0]和
char
输入[0]。在C中无效;您需要执行
列表[0][0]!=输入[0]
3)
list
未初始化,当然无法编译。缺少“;”和一个不应该出现的括号:PIt可能有助于添加一些关于您希望通过该程序实现什么的信息。例如,您是否试图查看列表中的第一个字符串是否等于另一个字符串?代码中存在一些逻辑问题,难以确定其意图。不确定是谁批准了该编辑,但请不要更正/更改OPs代码,这就是答案。定义“无法运行”。它不编译吗?它崩溃了?它说“False:…”?好的,1)删除malloc
cast
并关闭
.2)您正在比较
char*
列表[0]和
char
输入[0]。在C中无效;您需要执行
列表[0][0]!=输入[0]
3)
list
未初始化,当然无法编译。缺少“;”和一个不应该出现的括号:PIt可能有助于添加一些关于您希望通过该程序实现什么的信息。例如,您是否试图查看列表中的第一个字符串是否等于另一个字符串?代码中存在一些逻辑问题,因此很难确定其意图是什么。不确定是谁批准了该编辑,但请不要更正/更改OPs代码,这就是答案所在。如果我能再次投票支持malloc()如果我能再次投赞成票,因为我提到malloc()不需要投反对票