• 已解决 49855 个问题
  • 已帮助 5903 位优秀工程师

关于int型指针

donatello 2018-03-11 浏览量:528

如题,设置指针p指向int型数组a,*p=(int*)(&a+1);,为什么*(p-1)的值是数组a的最后一个值呢?不是应该是越界操作非法了吗?

5.JPG

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个数组指针在加1后就指向了该数组最后一个元素的后边一个地址,*(p-1)就是在这个地址上减去一个整型的地址,也就指向该数组的最后一个元素了。地址在减去1之前是越界的,减去1之后就不越界了。指针越界不要紧,只要不对越界的指针接引用就可以了。
    • 发布于 2018-03-11
    • 举报
    • 评论 1
    • 2
    • 0
donatello 回复了 micro虾米:噢噢,懂了,就是&a+1是跨了整个数组,而*(a+1)才是从a[0]跳到a[1]是吧? 回复

其他答案 数量:1
  • 类似的一个事件是,一个指向结构体的指针加一,偏移的字节是这个结构体的长度。
    • 发布于2018-03-11
    • 举报
    • 评论 0
    • 0
    • 0

关于int型指针