NULL和0的区别

在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

你可能感兴趣的:(NULL和0的区别)