私はC++コードを探していて、if(ptr && *ptr)
で混乱していましたが、この場合はどうなりますか?C++のif文でポインタとその逆参照を使用する理由
// 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, "\n\r");
if (a_pszBreak && *a_pszBreak)
{
*a_pszBreak = 0;
a_pszBreak++;
LogPollData((const char *)a_pszDataItem);
}
a_pszDataItem = a_pszBreak;
} while (a_pszBreak && *a_pszBreak);
の列に
a_pszBreak
点はそれが間違ってNULLポインタを参照解除防止する方法ですかどうかを確認するために使用されます。 &&は短絡です。したがって、 'ptr'がNULLの場合、' * ptr'は実行されません(もしあれば、それはsegfaultになります)。 –あなたは(間接参照演算子 '*'で) 'NULL'ポインタを逆参照できることを知っていますか?そして論理演算子 '&&'と '||'は[短絡評価](https://en.wikipedia.org/wiki/Short-circuit_evaluation)をしていることは知っていますか?そして、あなたは 'NULL'ポインタが" false "とみなされることを知っていますか?そして文字列はゼロで終了することがわかりますか?そして、ゼロ以外のものは「真」とみなされますか?あなたがこれらの5つのものすべてを知っているなら、その知識をまとめて、もう少し考えてみてください。 –
C++でポインタを使用しないでください。もはや1995年ではありません。あなたが読んでいるコードは古くからあります。 –