質問: C言語 char * str "abc"; printf("str %c\n", *(str + 1));
回答: 『intだと+1だと 変な文字が表示されるという認識でいたのですが』 『intにするとsと出力されます。』 無事に想定通り変な文字が出力されています。 『*(str+1)の部分を+2や+4などに変更してもbが表示されません』 +1で領域を超えて変な文字が出ると分かっているのに、 なぜ、+2や+4と更に先の領域を表示したら、bが出ると判断したのでしょう? ポインタとは、型を持ったアドレスであり、ポインタに対する演算は型を考慮した演算(ポインタ演算)が行われる事を理解する必要があります。 教科書のポインタ演算の項目を読み直して下さい。