Jaki jest czas życia wartości zwracanej przez funkcję?
Czytałem oreturn
wartości między wywołaniami funkcji,
i eksperymentował z następującym fragmentem kodu:
/* file structaddr.c */
#include <stdio.h>
#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;
}
Kod jest kompilowany bez błędów i ostrzeżeń.
Przetestowany zGCC 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) iVisual C ++ kompilatory.
gcc -m32 -std=c99 -Wall -o test structaddr.c
cl -W3 -Zi -GS -TC -Fetest structaddr.c
Wyjście:
Dzień dobry !
Jestem trochę zdezorientowany wynikiem.
Kod jest napisany poprawnie?
Moje pytanie :
Jaka jest widoczność funkcjireturn
wartość (tablica z astruct
w powyższym przykładzie) i jak prawidłowo uzyskać do nich dostęp?
Gdzie kończy się czas życiareturn
wartość?