请帮忙看下程序

来源:百度知道 编辑:UC知道 时间:2024/06/25 11:34:44
#include<iostream>
using namespace std;
int main( )
{ char str1[ ]=”I love china!”,str2[20],*p1,*p2;
p1=str1;p2=str2;
for(;*p1!=’\0’;p1++,p2++)
*p2=*p1;
*p2=’\0’; 为什么这里要*p2='\0\',有什么用?

p1=str1;p2=str2;
cout<<”str1 is:”<<p1<<endl;
cout<<”str2 is:”<<p2<<endl;
return 0;
如果是那样,那岂不是第二个数据中,全存的是0,我觉得第二语句为替代第一个

C语言中字符串是以\0为结尾的,否则输出时,就不知道哪是结尾了。
for(;*p1!=’\0’;p1++,p2++)
*p2=*p1;
执行完毕后,p2就已经有了str1中的所有内容了,但没有正确的结尾,所以*p2=’\0’;之后就有结尾了,这才是一个真正的C类型的字符串。还有你可能刚开始学这个,for后面没有{},你注意执行到哪。