c - 将 '\0' 分配给指针与将 NULL 分配给它相同吗?

标签 c pointers

下面的说法是否相同?

char *PTR='\0';

&

char *PTR=NULL;

最佳答案

不小心,是的。

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

如果您用双引号编写了 char *PTR="\0";,情况就大不相同了:"\0" 将被分配为双字符数组,两个字符均为 ASCII 0。PTR 将初始化为指向两个零中的第一个。

关于c - 将 '\0' 分配给指针与将 NULL 分配给它相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087362/

相关文章:

c - 以编程方式查找缓存级别的数量

c - 编写一个函数接收两个参数并返回差值

检查消息队列是否存在

c - 来自 epoll_wait 的 epoll 事件顺序

c - 使用 getchar 读取整数输入时出现意外的 putchar 输出

c++ - 我可以通过不正确地使用指针分配和值更改来破坏我的操作系统吗?

c# - NULL-Pointer Assignment Partition 是否有错误?

c - 字符串的动态内存分配

c++ - 指向指针属性的指针

c - 将指针数组分配给数组