次の関数について考えてみます。
char *f()
{
char *s=malloc(8);
}
main()
{
printf("%c",*f()='A');
}
行にコメントを付けるとchar *s=malloc(8);
、割り当てが*f()='A'
無効なメモリにアクセスしたかのようにエラーが発生します。変数を返すことはないのに、なぜ上記の割り当てがまったく機能しないのですか?
2番目の質問:'A'
関数の戻り時に作成される一時変数に割り当てられます。では、なぜ++a
などを左辺値として使用できないのでしょうか。