Копирование структур в Си напрямую через оператор присваивания, насколько это правильно?
Для копирования структур в Си пользуюсь операцией присваивания (=), компилятор (gcc) ошибки и предупреждения не даёт. Также делаю возврат структуры из функции.
Вопрос: насколько это правильно? Где можно прочитать об этом?
Пример:
struct sa { double d, int i };
struct ta { struct sa a, struct sa b, int c[12]};
typedef struct ta ta;
static ta ta1;
ta func(void) { return ta1 };
ta ta2 = func();
Присваивание структур соответствует стандарту ANSI C, почитать можно в Кернигане-Ритчи (кроме самых ранних изданий).
P.S. передача и возврат из функций тоже соответствует стандарту ANSI C. Но как заметили выше, надо иметь ввиду, что при передаче и возврате из функций осуществляется копирование структуры, что обычно менее эффективно, чем передача по указателю.