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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM