考虑以下
代码,在nullptr上进行指针运算是否安全?
我假设将任何偏移添加到nullptr导致另一个nullptr,到目前为止MSVC产生的结果与我预期的一样,但是我有点不确定是否使用这样的nullptr是安全的:
float * x = nullptr;
float * y = x + 31; // I assume y is a nullptr after this assigment
if (y != nullptr)
{
/* do something */
}
您没有定义“安全”对您意味着什么,但无论如何,您提出的
代码都有未定义的行为.指针算法仅允许指向数组对象的指针值,或者可能指向数组的一端. (出于此规则的目的,非数组对象被视为
一个元素的数组.)
由于空指针永远不是对象的地址或对象的地址,因此您的代码永远不会有明确定义的行为.