前端之家收集整理的这篇文章主要介绍了
c – nullptr和指针算术,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑以下
代码,在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 */
}
您没有定义“安全”对您意味着什么,但无论如何,您提出的
代码都有未定义的行为.指针算法仅允许指向数组对象的指针值,或者可能指向数组的一端. (出于此规则的目的,非数组对象被视为一个元素的数组.)
由于空指针永远不是对象的地址或对象的地址,因此您的代码永远不会有明确定义的行为.
原文链接:https://www.f2er.com/c/116659.html