NULL和0的區別

powerx_yc發表於2017-08-10

在C語言中

NULL0的值都是一樣的,但是為了使得目的和用途及容易識別,NULL用於指標和物件,0用於數值對於字串的結尾,使用\0,它的值也是0,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值


在不同的系統中

NULL並非總是和0等同,NULL僅僅代表空值,也就是指向一個不被使用的地址,在大多數系統中,都將0作為不被使用的地址,所以就有了類似這樣的定義

#define NULL 0

但並非總是如此,也有些系統不將0地址作為NULL,而是用其他的地址,所以說,千萬別將NULL0等價起來,特別是在一些跨平臺的程式碼中,這更是將給你帶來災難。


code by C

int main()
{
    int *p=NULL;
    printf("%s",p);
    return 0;
}

單步除錯可以看出執行int *p=NULL,p的值為0x00000000,可以看出,NULL在實際底層呼叫中就是0

相關文章