是否可以取消引用等于有效指针的元素指针?

pepper_chico

在C18中,我们有:

§6.5.9p10

当且仅当两个都是空指针时,两个指针比较相等,两个指针都是指向同一对象的指针(包括指向对象和它的开头的子对象的指针)或函数,都是指向同一数组最后一个元素的指针object,或者是指向一个数组对象的末尾的指针另一个是指向另一个数组对象的起点的指针,该数组对象恰好紧随地址空间中的第一个数组对象

因此int a[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}},我们可以拥有a[1] == a[0] + 2

结果可以保证*(a[1]) == *(a[0] + 2)吗?

dbush

这是容许取消引用这样一个指针,即使它比较等于另一个有效的指针。

关于+操作员状态的第6.5.6p8节

将具有整数类型的表达式添加到指针或从指针中减去时,结果将具有指针操作数的类型。如果指针操作数指向数组对象的元素,并且数组足够大,则结果指向与原始元素偏移的元素,以使结果数组元素和原始数组元素的下标之差等于整数表达式。换句话说,如果表达式P指向数组对象的第i个元素,则表达式(P)+N(等效于N+(P))和(P)-N(其中Nn的表达式)分别指向第i + n个和i-n -th数组对象的元素(如果存在)。而且,如果表达P指向数组对象的最后一个元素,表达式(P)+1指向数组对象的最后一个元素,如果表达式Q指向一个数组对象的最后一个元素,则表达式(Q)-1指向数组对象的最后一个元素。如果指针操作数和结果都指向同一数组对象的元素,或者指向数组对象的最后一个元素,则求值不应产生溢出。否则,行为是不确定的。如果结果指向数组对象的最后一个元素之后,则不应将其用作*被评估的一元运算的操作数

值得一提的是,一些编译器具有指针出处的概念,这意味着它在内部跟踪指针的来源。这样的结果是,如果两个不相关的变量在内存中相邻,则将一个地址与一个过去的地址进行比较,即使另一个地址相同,也将始终得出false。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在sizeof操作中取消引用空指针是否有效

来自分类Dev

在sizeof操作中取消引用空指针是否有效

来自分类Dev

指针算术有效,但指针取消引用不起作用

来自分类Dev

检查字符串是否等于有效的月份红宝石?

来自分类Dev

在移动向量后,我是否可以保证指向std :: vector元素的指针有效?

来自分类Dev

是否存在通过引用进行元素选择和通过指针操作进行元素选择都有效的情况?

来自分类Dev

我可以得到一个指向指向 nullptr 的指针的指针,它是否有效

来自分类Dev

有效取消引用空指针的规则是什么?

来自分类Dev

C++:澄清“有效的指针和引用”

来自分类Dev

有效指针的含义

来自分类Dev

有效指针的含义

来自分类Dev

有效指针的含义

来自分类Dev

结构是否取消引用有效的OpenCL?

来自分类Dev

是否取消引用等于nullptr的指针的标准未定义行为?

来自分类Dev

可以取消引用该指针吗?

来自分类Dev

如何确定指针是否等于数组的元素?

来自分类Dev

在现实生活中,是否存在简单的指向线程的指针作为线程取消标志不能有效地取消线程的情况?

来自分类Dev

试图取消引用`&`指针

来自分类Dev

Ruby:取消引用指针

来自分类Dev

取消引用的指针的地址

来自分类Dev

取消引用空指针

来自分类Dev

C ++:取消引用指针

来自分类Dev

取消引用空指针

来自分类Dev

寻找有效的交换字符指针

来自分类Dev

通过引用传递的指针对C ++中的getadrinfo有效

来自分类Dev

如果我使用unique_ptr的原始指针,然后使用reset,则仍然可以保证原始指针有效吗?

来自分类Dev

F#是否具有&的地址和指针取消引用*的功能?

来自分类Dev

如何计算C ++模板函数中有效指针元素的总数?

来自分类Dev

通过修改元素的最低有效位在大指针数组中隐藏数字

Related 相关文章

  1. 1

    在sizeof操作中取消引用空指针是否有效

  2. 2

    在sizeof操作中取消引用空指针是否有效

  3. 3

    指针算术有效,但指针取消引用不起作用

  4. 4

    检查字符串是否等于有效的月份红宝石?

  5. 5

    在移动向量后,我是否可以保证指向std :: vector元素的指针有效?

  6. 6

    是否存在通过引用进行元素选择和通过指针操作进行元素选择都有效的情况?

  7. 7

    我可以得到一个指向指向 nullptr 的指针的指针,它是否有效

  8. 8

    有效取消引用空指针的规则是什么?

  9. 9

    C++:澄清“有效的指针和引用”

  10. 10

    有效指针的含义

  11. 11

    有效指针的含义

  12. 12

    有效指针的含义

  13. 13

    结构是否取消引用有效的OpenCL?

  14. 14

    是否取消引用等于nullptr的指针的标准未定义行为?

  15. 15

    可以取消引用该指针吗?

  16. 16

    如何确定指针是否等于数组的元素?

  17. 17

    在现实生活中,是否存在简单的指向线程的指针作为线程取消标志不能有效地取消线程的情况?

  18. 18

    试图取消引用`&`指针

  19. 19

    Ruby:取消引用指针

  20. 20

    取消引用的指针的地址

  21. 21

    取消引用空指针

  22. 22

    C ++:取消引用指针

  23. 23

    取消引用空指针

  24. 24

    寻找有效的交换字符指针

  25. 25

    通过引用传递的指针对C ++中的getadrinfo有效

  26. 26

    如果我使用unique_ptr的原始指针,然后使用reset,则仍然可以保证原始指针有效吗?

  27. 27

    F#是否具有&的地址和指针取消引用*的功能?

  28. 28

    如何计算C ++模板函数中有效指针元素的总数?

  29. 29

    通过修改元素的最低有效位在大指针数组中隐藏数字

热门标签

归档