Рассмотрим следующую функцию:
char *f()
{
char *s=malloc(8);
}
main()
{
printf("%c",*f()='A');
}
Если я прокомментирую строку char *s=malloc(8);
, я получаю сообщение об ошибке, как будто присвоение *f()='A'
получило доступ к недействительной памяти. Поскольку я никогда не возвращаю переменную, почему вышеупомянутое назначение вообще работает?
2-й вопрос: 'A'
присваивается временной переменной, созданной при возврате функции. Так почему же ++a
и т. Д. Нельзя использовать в качестве lvalue?