Я знаю, что в C мы не можем вернуть массив из функции, а указатель на массив. Но я хочу знать, что особенного в structs
, что делает их возвращаемыми функциями, даже если они содержат массивы.
Почему упаковка struct
делает следующую программу действительной?
#include <stdio.h>
struct data {
char buf[256];
};
struct data Foo(const char *buf);
int main(void)
{
struct data obj;
obj = Foo("This is a sentence.");
printf("%s\n", obj.buf);
return 0;
}
struct data Foo(const char *buf)
{
struct data X;
strcpy(X.buf, buf);
return X;
}