C 空指针(NULL)与0的区别

空指针常量,ANSI规定:规定预处理宏NULL 为空指针常量,通常#define NULL 0或(void *)0

误区:有的机器不同类型的指针使用不同的内部表示,例如将字符指针的空指针常量定义为#define NULL ((char *)0),这样的NULL定义对于接受字符指针的函数没有问题,但对于其他类型的指针仍然需要进行显示的转换,本来合法的构造可能会失败,例如FILE *fp=NULL;

注意1:NULL只能用做指针,非指针变量中不能用NULL

注意2:运行时的整数0转化为指针不一定是空指针,只有常量整数0才能保证空指针



你可能感兴趣的:(C)