有没有办法用bitwise检查char *是否为null

时间:2013-12-30 13:44:28

标签: c bit-manipulation

我有一个char数组。分配了一些元素,有些则没有。 我想在不询问(!arr[i])

的情况下计算所有未分配的人数
char* arr[500];
.
.
.
for(i=0; i < 500; ++i)
{
   if( !arr[i] )
   { 
      counter++;
   }
}

但是在C

中做出一些像这样的魔术
for(i=0; i < 500; ++i)
{
    counter += !(arr[i]| 0x00); //this does not work 
}

也许这个问题更为通用:有没有办法比较任何指针与NULL和按位运算。

编辑:不,不是==;我理解如何使用==来完成它,但我认为它在编译时与汇编程序中的if(!arr[i])没有区别。

1 个答案:

答案 0 :(得分:3)

for(i=0; i < 500; ++i)
{
    counter += arr[i] == NULL;
}

甚至......

for(i=0; i < 500; ++i)
{
    counter += !arr[i];
}