计算数组的超出末端指针
- C/C++ code
#include <iostream>using namespace std;int main(){ const size_t arr_size=5; int arr[arr_size]={1,2,3,4,5}; int *p=arr; int *p2=p+4; int *p3=p+arr_size; cout<<*p2<<' '<<*p3<<endl; return 0; }
上面这段输出的结果是:
5 5
请问,为什么超出末端的指针解引用也是数组末端的值呢?
[解决办法]
楼主可以把数组的内容从12345换成67890试试看
[解决办法]
这个值应该是随机的吧
[解决办法]
楼主在学习溢出么? 很明显的,第二个5不是随机值。而是arr_size的值。
[解决办法]
越界的int *p3=p+arr_size值是不确定的,取决于当时那个地址的数据,而你的结果只能表明越界的那个地址正好存放的是5而已。