#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) , 簡單的問題反而會忽略