教科書からこのコードを取得しました:
#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=
代わりに が表示され、for ループでの代入の後でもp1=hello,world!
for ポインターが表示されるのですか?p2
p2=
しかし、この行のコメントを外した後p1=str1; p2=str2;
、出力はp1=hello,world!, p2=hello,world!
、なぜそのように機能するのですか?
そして、この行を書く理由は何*p2='\0';
ですか。この行がコメントアウトされているかどうかは関係ありません。以前の出力は変更されません。
ここのcharポインタがどのように機能しているか誰か教えてもらえますか?