C/C++の宿題片付けます 152代目
■ このスレッドは過去ログ倉庫に格納されています
0842デフォルトの名無しさん
2011/10/26(水) 22:40:26.85abcd
の入力では4が返ってる。
pは配列strのどこかを指すポインタ
初期化時は配列strの先頭を指してる。
whileループはiが偽(0)になるまで、例では4回ループする。
*(p + l) = *p はポインタpが指す位置からl番目、'\0'が入ってる位置にポインタpが指してる文字、
1ループ目では先頭のaが代入される。
*(p + l + 1) = '\0' は、↑で代入した位置の次に'\0'を代入して終端文字の修正をしてる。
printf("%s\n", ++p) は、分解すると
++p;
printf("%s\n", p);
ポインタpの指す位置から末尾に1文字移動したので、ポインタを一つずらして表示させてる。
長ったらしいのでまとめると、
配列strに文字を入力した後は
abcd\0
abcda\0
abcdab\0
abcdabc\0
って具合に一文字ずつ追加しながらポインタpも一つずつずらし、
結果入力された文字が一つずつずれて表示されてる。
■ このスレッドは過去ログ倉庫に格納されています