读书人

帮小弟我看看怎么遍历动态int数组

发布时间: 2012-06-11 17:42:22 作者: rapoo

帮我看看,如何遍历动态int数组?
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{

int arr[3]={2,5,6};
int *ip=arr;
size_t sz=sizeof(arr)/sizeof(*arr);
int *arr2=new int[sz];
while(ip!=arr+sz){
*arr2=*ip;
*arr2++;
*ip++;
}
for (int *i=arr2;i!=arr2+sz;++i)
cout<< *i<<' ';
cout<<endl;
}

这段代码 得到的结果为什么不是2 5 6?
高手指点,先谢过了

[解决办法]
因为程序执行完WHILE后arr2的指向已经越界了
加多一行
arr2-=sz;
就好,另外地址偏移时不需要*arr2++,直接arr2++就好

C/C++ code
#include<iostream>#include<vector>#include<string>using namespace std;int main(){int arr[3]={2,5,6};int *ip=arr;size_t sz=sizeof(arr)/sizeof(*arr);int *arr2=new int[sz];while(ip!=arr+sz){*arr2=*ip;arr2++;ip++;}arr2-=sz;for (int *i=arr2;i!=arr2+sz;++i)cout<< *i<<' ';cout<<endl;} 

读书人网 >C++

热点推荐