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