我从教科书中得到了这段代码:
#include <iostream>
using namespace std;
int main(){
char str1[]="hello,world!", str2[20], *p1, *p2;
p1=str1; p2=str2;
/*
for(;*p1!='\0';p1++,p2++){
cout<<"p1="<<*p1<<endl;
*p2=*p1;cout<<"p2="<<*p2<<endl;
}
*p2='\0';
p1=str1; p2=str2;
*/
cout<<"p1="<<p1<<endl;
cout<< "p2="<<p2<<endl;
return 0;
}
我运行了这段代码,它会输出p1=hello,world!p2=
我能理解的。
但是如果我取消注释 for 循环,输出显示在这里我很困惑,为什么在 for 循环之后,为什么它显示p1=
而不是显示p1=hello,world!
,以及 for 指针p2
,即使在 for 循环中赋值后,它仍然显示p2=
?
但是在我取消注释p1=str1; p2=str2;
这一行之后,输出是p1=hello,world!, p2=hello,world!
,为什么它会这样工作?
以及写这行的原因是*p2='\0';
什么,这行注释掉与否都没有关系,之前的输出不会改变。
谁能告诉我这里的 char 指针是如何工作的?