如何计算数组中的非零元素?

时间:2013-12-30 12:40:52

标签: c arrays

如何计算数组中的非零元素 - 没有警告? 我有简单的代码:

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++;
   }
}

但我有警告:

  

指针和整数之间的比较[默认启用]

我该如何解决?

3 个答案:

答案 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])