Неопределенное поведение: при попытке получить доступ к результату вызова функции
Следующее компилирует и печатает «строку» в качестве вывода.
#include <stdio.h>
struct S { int x; char c[7]; };
struct S bar() {
struct S s = {42, "string"};
return s;
}
int main()
{
printf("%s", bar().c);
}
По-видимому, это вызывает неопределенное поведение в соответствии с
C99 6.5.2.2/5 Если предпринята попытка изменить результат вызова функции или получить к нему доступ после следующей точки последовательности, поведение не определено.
Я не понимаю, где говорится о «следующей точке последовательности». Что тут происходит?