检查空字符C ++

时间:2015-04-14 13:35:32

标签: c++ pointers null char

我试图测试存储在特定内存地址中的值是否为NULL,我有这个并且在调试时它会将该地址中的char值显示为' \ 0&#39 ;。 然而,它总是跳过这个IF声明。

这是正确的语法吗? 我已确保将地址设置为null。

if (test->address + length == NULL)
{
    ..code..
}

3 个答案:

答案 0 :(得分:5)

假设addresschar*指针(或char[]数组),您需要取消引用它以访问char值。那是

*(test->address + length)

或等效

test->address[length]

答案 1 :(得分:3)

如果我理解正确,那么有效陈述将如下所示

if ( *( test->address + length ) == '\0' )
{
    ..code..
}

或者

if ( test->address[length] == '\0' )
{
    ..code..
}

如果对象test->地址类型定义为字符数组或类型为char *的指针

答案 2 :(得分:0)

当然它会跳过if。那是因为指针算术规则。

  • test->address是一个指针
  • test->address + lengthtest->address + sizeof(T) * length,其中Taddress的类型。

变化:

if (test->address + length == NULL)
{
    ..code..
}

if (test->address[length] == 0)
{
    ..code..
}