C语言 NULL和0的区别

学了指针,接触到了一个“NULL”;NUll在预处理命令中这样定义:

#include NULL 0
那问题来了,NULL和0什么区别呢?
查了资料发现有以下区别:(引用如下)
Q1:什么是 NULL?
NULL 是一个标准规定的宏定义,用来表示空指针常量。由系统保证空指针不指向任何实际的对象或者函数。反过来说,任何对象或者函数的地址都不可能是空指针。
Q2:空指针(null ointer)指向了内存的什么地方(空指针的内部实现)
标准并没有对空指针指向内存中的什么地方这一个问题作出规定,也就是说用哪个具体的地址值(0x0 地址还是某一特定地址)表示空指针取决于系统的实现。
我们常见的空指针一般指向0 地址,即空指针的内部用全0 来表示。
注意:不要把空指针的内部表示等同于整数0 的对象表示——如上所述,有时它们是不同的。不含指针时两者可以等同