为什么赋给值指针(动态指针)值时,两次输出不一样?并且输出的地址也不一样,怎么让它们一样

#include
#include
using namespace std;
main()
{
string str1;
cout<<"输入一个数";
cin>>str1;
char *Num1=new char[str1.length()];
int *num1=new int[str1.length()];
str1.copy(Num1,str1.length(),0);
for (int i2=0;i2<str1.length();i2++)//第一次输出
{
*num1=*Num1-48;//转换成数字,赋值给动态指针
cout<<*num1<<endl;//输出指针值
cout<<num1<<endl;//输出地址
num1++;
Num1++;

}
cout<<endl;
for (int i=0;i<str1.length();i++)//第二次输出
{
    cout<<num1;
    num1++;
    cout<<endl;
}

}
测试结果:图片说明

你改变了指针,那么肯定得不到了。
除非你再加一个变量在你修改以前
int *num1=new int[str1.length()];
int * oldnum1 = num1;

你要什么和什么一样。不同的地址,不同的值当然不一样。你要一样就赋值呗。