Каково время жизни возвращаемого значения функции?

Я читал оreturn значения между вызовами функций,

и экспериментировал со следующим фрагментом кода:

/* file structaddr.c */
#include     
#define MSIZE 10

struct simple
{   
    char c_str[MSIZE];
};
struct simple xprint(void)
{
    struct simple ret = { "Morning !" };
    return ret;
}
int main(void)
{   
    printf("Good %s\n", xprint().c_str);    
    return 0;
}

Код компилируется без ошибок и предупреждений.

Протестировано сGCC 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) а такжеVisual C ++ компиляторы.

 gcc -m32 -std=c99 -Wall -o test  structaddr.c  
 cl -W3 -Zi -GS -TC -Fetest structaddr.c

Выход :

Доброе утро'

Я немного смущен результатом.

Код написан правильно?

Мой вопрос :

Какова видимость функцииreturn значение (массив изstruct в приведенном выше примере), и как правильно получить к ним доступ?

Где заканчивается жизньreturn значение ?

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

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