質問がありますが、取得している出力について少し混乱しています。誰かがこれで私を助けてくれませんか。
`
#include <stdio.h>
int main()
{
int *i = 5;
char *c = i[1];
printf("%c", *c);
}
`
エラーなしで適切にコンパイルされますか。コンパイルすると、実行時にセグメンテーション違反が発生しますか。はいの場合、どの行が原因ですか。私によると、main() の最初の 2 行は問題ありません。printf ステートメントでセグメンテーション違反が発生しますが、それを正当化することはできません。ここで int *i は定数に初期化されます。したがって、「i」で別の場所を指すことはできますが、*i を変更することはできません。「i」の 2 番目のバイトを char *c に割り当てていますが、ここでは *i を変更していません。次に、 *c を印刷するとセグメンテーション違反が発生する理由。これが私の見解です。より良い説明を探しています。