Неопределенное поведение: при попытке получить доступ к результату вызова функции

Следующее компилирует и печатает «строку» в качестве вывода.

#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 Если предпринята попытка изменить результат вызова функции или получить к нему доступ после следующей точки последовательности, поведение не определено.

Я не понимаю, где говорится о «следующей точке последовательности». Что тут происходит?

Ответы на вопрос(3)

Ваш ответ на вопрос