Каково время жизни возвращаемого значения функции?
Я читал оreturn
значения между вызовами функций,
и экспериментировал со следующим фрагментом кода:
/* file structaddr.c */
#include <stdio.h>
#define MSIZE 10
struct simple
{
char c_str[MSIZE];
};
st,ruct 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
стоимость ?