在C/C++中,仅当结果指针位于原始指向的完整对象内时,才定义指针的加法或减法.此外,只有当两个指向对象是唯一完整对象的子对象时,才能执行两个指针的比较.
这种限制的原因是什么?
我认为分段内存模型(参见这里 §1.2.1)可能是其中一个原因,但由于编译器实际上可以定义所有指针的总顺序,如本答案所示,我对此表示怀疑.
c c++ pointers pointer-arithmetic language-lawyer
c ×1
c++ ×1
language-lawyer ×1
pointer-arithmetic ×1
pointers ×1