首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-06-11 
帮我看看,如何遍历动态int数组?#includeiostream#includevector#includestringusing namespace std

帮我看看,如何遍历动态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;} 

热点排行