我试图测试存储在特定内存地址中的值是否为NULL,我有这个并且在调试时它会将该地址中的char值显示为' \ 0&#39 ;。 然而,它总是跳过这个IF声明。
这是正确的语法吗? 我已确保将地址设置为null。
if (test->address + length == NULL)
{
..code..
}
答案 0 :(得分:5)
假设address
是char*
指针(或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 + length
为test->address + sizeof(T) * length
,其中T
为address
的类型。变化:
if (test->address + length == NULL)
{
..code..
}
到
if (test->address[length] == 0)
{
..code..
}