为什么要在 c++ 的 if 语句中使用指针及其取消引用
Why use a Pointer and its dereference in if statement in c++
我正在寻找一些 c++ 代码,if(ptr && *ptr)
感到困惑,在这种情况下它有什么作用?
// Process the data here. We just break the data into separate pieces and
// display it for the sake of simplicity.
char * a_pszBreak = NULL;
char * a_pszDataItem = (char*)s_aucDataBuffer;
do
{
// The poll data is terminated by either a Carriage Return alone, or a
// Carriage Return/Line Feed pair.
a_pszBreak = strpbrk(a_pszDataItem, "nr");
if (a_pszBreak && *a_pszBreak)
{
*a_pszBreak = 0;
a_pszBreak++;
LogPollData((const char *)a_pszDataItem);
}
a_pszDataItem = a_pszBreak;
} while (a_pszBreak && *a_pszBreak);
这意味着指针应该指向某物,此外,某物必须与 0 不同。
就像(a_pszBreak != nullptr && a_pszBrealk[0] != ' ')
if (a_pszBreak && *a_pszBreak)
在C++中,任何可以解释为 0 的东西都是假的,而其他任何东西都被认为是真的。
因此,这可确保指针不是 NULL,并且指针指向的第一个元素的内容也不是 null 或 0。
由于短路,如果指针为NULL,则不会检查第二部分。
因此,在简单的英语中,此if
-语句检查指针是否不是nullptr
以及指针是否不指向空字符串。
In if (a_pszBreak && *a_pszBreak)
a_pszBreak
用于检查a_pszBreak
是否指向有效的内存区域,即a_pszBreak
不是 NULL,*a_pszBreak
用于检查a_pszBreak
指向的内存是否不以 NULL 字符(即