如果我说的是nullptr
,正确的术语是nullptr
(只有一个,所有提及都是对同一事物的引用),还是nullptr
(有几个相同的东西)。
也就是说,函数文档应该说
如果ptr是
nullptr
,则该函数使用内部缓冲区...
或
如果ptr是一个
nullptr
,该函数使用内部缓冲区...
(从学究的角度来看,这不是一个基于意见的问题,因为它可以通过参考nullptr
到底是什么来回答)
标准本身交替使用三种形式,但没有一种是"is a nullptr"或"is the nullptr"。如果你使用这三者中的任何一个,你就是一个很好的公司。
为空
int_type underflow();
7备注:
basic_streambuf
的公众成员只有在gptr()
null 或gptr() >= egptr()
时调用此虚函数
是一个空指针
int sync();
38效果:[...]构造哨兵对象后,如果
rdbuf()
是空指针,则返回-1
。[...]
是nullptr
void lock();
3投掷:[...]
system_error
,如果pm
nullptr
,则错误条件为operation_not_permitted
。[...]
nullptr
是一个关键字,用于指定类型为std::nullptr_t
的 prvalue。因此,在超形式上,指针不能是 [a|the]nullptr
。但是,它可以"为空"(或"具有空值")。
在您的文档示例中,我只想说
如果ptr为空,则函数 ...
请注意,std::nullptr_t
(因此nullptr
)甚至不是指针类型!它是一种特殊类型,可以转换为指向对象的任何指针、指向函数的指针或指向成员的指针。我认为这是不谈论指针nullptr
的额外理由;指针只是空。
说"anullptr
"可能有意义的一种上下文是,每个指针类型都有一个NULL
指针值,并且对于每个实现中的所有类型,这些值不一定相同。 (尽管您必须回到近五十年前的一些过时的计算机才能找到例外。 有人可能会称int* maybe_int_p = nullptr;
为"nullptr
",char* maybe_string_p = nullptr;
为"nullptr
",尽管它们都不完全相同nullptr_t
型常数。 无论如何,我会将其发音与"NULL
指针"相同。
即便如此,你仍然会在明确你的意思的上下文中说"nullptr
"。
至于实际使用情况,Google ngram 查看器找不到任何示例。 正如先前的回答所指出的那样,这两个术语都不是官方术语。 所以没有既定的用法可以遵循,也没有一个听起来对我不利,人们不会有任何困难理解你的意思。 如果您指的是关键字nullptr
,这是一个单例,因此称其为"the"感觉更合乎逻辑。但是使用您喜欢的任何一种。