If判断指针非空

if(p)和if(!p)含义

对于 int *p; 来说

1
2
if (!p) ==> if (p == NULL)
if (p) ==> if (p != NULL)

对于 int p; 来说

1
2
if (!p) ==> if (p == 0)
if (p) ==> if (p != 0)

在c语言中,0 被认为是假,非0 被认为是真

如果p的值为0,!p判定为真;

如果p的值不是0,!p的判定为假

如果是一个指针,指针有内容,即:p的值不是0,!p的判定为假

如果指针没有内容,NULL,即:p的值为0,!p判定为真;