Przede wszystkim, aby zacytować C11
, rozdział §6.8.6.4, return
oświadczenie, ( moje wyróżnienie )
Jeśli wykonywana jest return
instrukcja z wyrażeniem, wartość wyrażenia jest zwracana wywołującemu jako wartość wyrażenia wywołania funkcji.
Zwracanie zmiennej strukturalnej jest możliwe (i poprawne), ponieważ zwracana jest wartość struktury . Jest to podobne do zwracania dowolnego pierwotnego typu danych ( int
na przykład zwracania ).
Z drugiej strony, jeśli zwrócisz tablicę , używając funkcji return <array_name>
, zwróci ona zasadniczo adres pierwszego elementu tablicy UWAGA , który staje się nieprawidłowy w funkcji wywołującej, jeśli tablica była lokalna dla wywoływanych funkcji. Zatem zwrócenie tablicy w ten sposób nie jest możliwe.
Tak więc, TL; DR , nie ma nic specjalnego w struct
s, specjalnością są tablice .
UWAGA:
Cytując C11
ponownie, rozdział §6.3.2.1, (wyróżnienie moje )
Z wyjątkiem sytuacji, gdy jest to operand sizeof
operatora, _Alignof
operator lub &
operator jednoargumentowy lub literał łańcuchowy używany do inicjalizacji tablicy, wyrażenie typu „tablica typu” jest konwertowane na wyrażenie o typie „” wskaźnik do typu „”, który wskazuje na początkowy element obiektu tablicy i nie jest wartością l. […]
union
. Co jest specjalnego w związkach zawodowych?