C语言本身并没有限制说指针变量不能为0,有限制的一般是平台(比如操作系统),如果平台没有限制、任何地址都可以读写。操作系统下、指针通常不会允许为0,因为0地址是不开放给用户程序操作的,如果用户程序操作了0地址(及其他受保护的地址),操作系统就会给出一个异常。而在没用操作系统的时候,我们的程序就自由了。在单片机开发中,我们常常不使用操作系统,指针可以为0、也可以填写0地址。