首页 > 解决方案 > 将 '\0' 分配给指针是否与分配 NULL 相同?

问题描述

以下陈述是否相同?

char *PTR='\0';

&

char *PTR=NULL;

标签: cpointers

解决方案


不小心,是的。

'\0'是 ASCII 码为 0 的字符;因此,它是一个值为 0NULL的整数。通常也是一个值为 0 的整数。它们通常具有不同的大小,但编译器会在这种情况下识别出这一点,因此在这两种情况下都PTR以空指针结尾(即值为 0 的指针)。

如果你写char *PTR="\0";的是双引号,那是一个非常不同的情况:"\0"将被分配为一个双字符数组,两个字符都是 ASCII 0。PTR将被初始化为指向两个零中的第一个。


推荐阅读