广东下雨蜗牛:这条程序怎么改 C++

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 11:32:39
#include<iostream.h>
void main(){
char *str1,*str2;
str1=new char[100];
str2=new char[100];
cin.getline(str1,100);
for(int i=0;*(str1+i)!='\0';i++)
*(str2+i)=*(str1+i);
*(str2+i)!='\0';
cout<<"*str1:"<<str1<<endl;
cout<<"*str2:"<<str2<<endl;
delete []str1;
delete []str2;
}

这程序的目地是从键盘上输入字符串str1,将字符串str1复制到字符串str2.现在得出的运行结果是能复制,但同时还出现乱码,谁能帮我改改
str1=new char[100]; str2=new char[100]; delete []str1; delete []str2;
这几句话是什么意思?为什么在这里要用这句话,为什么不能去掉?

问题补充:str1=new char[100]; str2=new char[100]; delete []str1; delete []str2;
这几句话是什么意思?为什么在这里要用这句话,为什么不能去掉?

这是动态分配内存,如果只定义指针,不初始化不给分配内存,那这个*st1就没有意义了 而分配内存之后就必须要释放内存 防止内存泄露 所以就必须有delete [] str1

*(str2+i)!='\0';
改为*(str2+i)='\0';

问题补充:str1=new char[100]; str2=new char[100]; delete []str1; delete []str2;
这几句话是什么意思?为什么在这里要用这句话,为什么不能去掉?

new是给指针动态分配内存
delete是释放内存空间