質問: { "abcde" };の中身はabcdeでしたが、一回目のループでbbcde、二回目でbccde、三回目bcdde 四回目bcdee ``` bbcde ccde dde ee f ``` ![デバッグ画像](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/0d1bcfc8fc3b83eef29b9ad5d164c263.png)
回答: はじめまして まずはわかりやすい方から 下のコードは`p`に`str`の先頭ポインタを渡しています なので`p`は`str`そのものと言えます なので(*p) = str[i]になります ※iは○文字目を意味します それに加算しているので 'a'+1='b', 'b'+1='c',... みたいになっています ``` #include int main(void) { char str[] = "abcde" ; for (char* p = str; *p; ++p) // ここでstrの先頭ポインタをpに渡している // ループが回るごとにpのポインタは1バイトづつ動く { ++(*p); // (*p) -> str[i] なのでstr自体を書き換えている printf("%s\n", &(*p)); } } ```