这是因为你
while((*(p++) = *(p1++)) != 0)
这个语句执行之后 p 指针已经指向了所分配内存的最后位置,当然不能成功
#include <iostream>
#include <string>
using namespace std;
int main()
{
char *p1="This is a test!";
char *p=new char[strlen(p1)+1];
char *p_start=p;
while((*(p++) = *(p1++)) != 0);
cout<< p_start<<endl;
p=p_start;//添加此语句就可以了
delete [] p;
return 0;
}
while((*(p++) = *(p1++)) != 0)
这个语句执行之后 p 指针已经指向了所分配内存的最后位置,当然不能成功
#include <iostream>
#include <string>
using namespace std;
int main()
{
char *p1="This is a test!";
char *p=new char[strlen(p1)+1];
char *p_start=p;
while((*(p++) = *(p1++)) != 0);
cout<< p_start<<endl;
p=p_start;//添加此语句就可以了
delete [] p;
return 0;
}