C语言忽略的一点if(p)和if(!p)与if(p ==NULL) 有什么关系呢

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 5 ;
int * p =(int *)malloc(sizeof(int));
int * q =NULL ;
if(!q) printf("没有分配内存\n");exit(-1);
if(p)
{
p = &a ;
}
printf("%d\n",*p);
}

c语言里, 数字0被认为是假, 非0被认为是真
假设p内存分配成功那么if(p) 是一个为永真的表达式他等于if(p!=NULL)

假设q内存分配失败,他就是NULL,那么if(!q) 就等于if(q==NULL) , 简单的问题反而会忽略

猜你喜欢

转载自www.cnblogs.com/cocobear9/p/12740749.html