c - 有没有办法用按位检查 char * 是否为空

标签 c bit-manipulation

我有一个字符数组。有些元素已分配,有些则未分配。 我想计算所有未分配的数量,而不询问是否 (!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]) 没有区别。

最佳答案

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

或者甚至...

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

关于c - 有没有办法用按位检查 char * 是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20840788/

相关文章:

c - 锁定 api 的正确约定是什么?

c - free如何知道要释放的内存大小?

c - 逻辑算术移位

Java:用于标志检查的按位运算

谁能解释一下这个简短的 C 操作的输出吗?

c - 仅使用按位运算来除两个整数

c - C中的char string [LENGTH]和char * string [LEN]有什么区别

c - 等效于两个按位运算

c - 如何在 makefile 构建中启用 "#ifndef/#endif" block ?

swift - 如何从 Swift 中的 UInt8 变量中获取 N 位?