gpt4 book ai didi

c++ - 为什么语句int null = 0, *p = null 是非法的?

转载 作者:太空狗 更新时间:2023-10-29 23:35:34 25 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试学习指针的概念。有人能告诉我为什么下面的 C++ 语句是非法的吗?在我看来这是合法的,但有人告诉我这是非法的。

int null = 0, *p = null;

最佳答案

C++ 标准允许为指针分配值 0 作为常量。

然而,代码:

int null = 0;
int *p = null;

没有将p设置为常量0,而是将其设置为null的值,这是一个整型变量。

如果我们稍微概括一下,将 int null = 0; 放在一行中,将 int *p = null; 放在完全不同的一行中,有一些之间的代码。没有人说中间的代码不执行 null = 4; - 但是,我不认为这是不允许这样做的主要原因,而是它更容易编写一个编译器检查“这是整数常量 0”而不是“这个命名常量的值为零”。如果常量来自另一个编译单元(链接时间常量)怎么办?

此外,阅读 0 比拥有 46 种不同的编码标准要容易得多,每种编码标准对 null 使用不同的名称。

请注意,即使您使 const int null = 0;,它仍然不是常量 0 - 它是一个与 0 具有相同值的常量,但在词法上与 0 不同。

关于c++ - 为什么语句int null = 0, *p = null 是非法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com