Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R14.1 “避免空指针解引用” 空指针的描述可以修改 #53

Open
Mq-b opened this issue Apr 17, 2024 · 4 comments
Open

R14.1 “避免空指针解引用” 空指针的描述可以修改 #53

Mq-b opened this issue Apr 17, 2024 · 4 comments

Comments

@Mq-b
Copy link
Contributor

Mq-b commented Apr 17, 2024

原文:

使用 nullptr、NULL、0 等常量初始化的指针是空指针

应改为:“使用 nullptr、NULL、0 这些空指针常量初始化的指针是空指针”。

建议强调“空指针常量”,其实考虑字面量这种说法似乎也可行。

”,事实上没有额外的空指针常量了。

这里的“”不可能表达的是:“零初始化值初始化也初始化指针为它对应的空值。

除非表达的是:“std::nullptr_t 类型的纯右值”,然而它通常就是 nullptr。除非......:

int* p = std::nullptr_t{};

然而感觉这也不太可能是原文表达的“常量”。


写了半天感觉莫名其妙,因为可以简单的描述:

空指针是值为空的指针(通常使用空指针字面量 nullptr,或空指针常量 0、NULL 进行初始化)

之前提过:#32

@brotherbeer
Copy link
Collaborator

0L、'\0' 甚至 false、1 - 1,以及 C 语言的 (void*)0 ,也包括 C++ 的 nullptr_t{},都可以作为空指针常量,只是不建议这么用,所以文中用“等常量”来概括了。

当然,“空指针常量” 这个概念是值得进一步强调的,我们后续会进行更严谨的阐述。

@Mq-b
Copy link
Contributor Author

Mq-b commented Apr 19, 2024

这是考虑 C 语言导致的,行吧。

@frederick-vs-ja
Copy link

0L、'\0' 甚至 false、1 - 1,以及 C 语言的 (void*)0 ,也包括 C++ 的 nullptr_t{},都可以作为空指针常量,只是不建议这么用,所以文中用“等常量”来概括了。

当然,“空指针常量” 这个概念是值得进一步强调的,我们后续会进行更严谨的阐述。

注意 C++11/CWG903'\0'false1 - 1 不再被允许为空指针常量了;C 中仍然允许这些表达式作为空指针常量。

@brotherbeer
Copy link
Collaborator

0L、'\0' 甚至 false、1 - 1,以及 C 语言的 (void*)0 ,也包括 C++ 的 nullptr_t{},都可以作为空指针常量,只是不建议这么用,所以文中用“等常量”来概括了。
当然,“空指针常量” 这个概念是值得进一步强调的,我们后续会进行更严谨的阐述。

注意 C++11/CWG903'\0'false1 - 1 不再被允许为空指针常量了;C 中仍然允许这些表达式作为空指针常量。

收到~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants