use*_*453 8 c++ pointers nullptr c++11
考虑以下代码,是否可以安全地进行指针运算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 */
}
Run Code Online (Sandbox Code Playgroud)
Ker*_* SB 11
您没有定义"安全"对您意味着什么,但无论如何,您提出的代码都有未定义的行为.指针算法仅允许指向数组对象的指针值,或者可能指向数组的一端.(出于此规则的目的,非数组对象被视为一个元素的数组.)
由于空指针永远不是对象的地址或对象的地址,因此您的代码永远不会有明确定义的行为.
is it safe to do pointer arithmetic on nullptr?
Run Code Online (Sandbox Code Playgroud)
C++ 定义了两种操作nullptr.用于:
float * x=nullptr;
float * y=nullptr;
Run Code Online (Sandbox Code Playgroud)
x +/- 0 = x
x-y=0 //note x and y have the same type
你不能对未定义的内容做出假设,所以你不应该这样做.
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |