佟伟收藏:初学者,指针给数组赋值问题

来源:百度文库 编辑:高校问答 时间:2024/05/05 19:00:32
#include<iostream>
using namespace std;
int main()
{ const size_t size=5;
int arry1[size];
for(int *pbegin=arry1,*pend=arry1+size;
pbegin!=pend;++pbegin)
*pbegin=0;
cout<<*pbegin<<' ';
return 0;
}
输出结果是5,不知那里错了请高手指点

arry1声明为大小为5的数组,那么arry1就只有下标为0,1,2,3,4的5个元素,而pend=arry1+5后就超出了数组的范围,指向了arry[4]后面的内存区域。你的循环是当pbegin等于pend时停止,那么此时pbegin也超出了数组的范围。另外,在一些编译器中,会在数组的前面或后面分配一个空间来保存数组元素的个数,你的编译器正好在后面分配一个空间,保存元素个数:5,而此时pbegin和pend正好指向这个空间,所以输出5。

你希望它输出什么呢?另外,你操作了不安全的内存空间。