如何计算数组中的非零元素 - 没有警告? 我有简单的代码:
int i;
char *symbols[1000];
for(i = 0; i < 10; i++){
symbols[i] = "Hi :-)";
}
i++;
symbols[i] = NULL;
int mumberofelements = 0;
for(i=0; i < 1000; i++){
if(symbols[i] != NULL){ // WARNING comparison between pointer and integer [enabled by default]
numberofelemets++;
}
}
但我有警告:
指针和整数之间的比较[默认启用]
我该如何解决?
答案 0 :(得分:3)
您无需明确核对NULL
for(i=0; i < 1000; i++)
{
if(!symbols[i]) // If pointer is NULL then increase the elements
numberofelemets++;
}
答案 1 :(得分:2)
if(symbols[i] != NULL) -> if(!symbols[i])
答案 2 :(得分:0)
NULL定义为指针类型,通常为(void *)0。
问题在于:symbols[i] != NULL
。
执行此操作的正确方法是将其与相同类型的内容进行比较,在这种情况下,您要查找空字符串,即if(!symbols[i])