Конструкторы для структур С
Здравствуйте. Дело в том, что раньше изучал исключительно С++, сейчас потребовалось написать программу на чистом С. Вопрос такой: имеется ли в С возможность создать конструктор для структуры?
В частности, ситуация такая, что нужно делать структуру под матрицу и соответствующие методы работы с ней. Могу ли я создать конструктор, чтобы выделить память сразу же при объявлении, или всё-таки придётся писать на это отдельную функцию с маллоками?
Да, по хорошему придется писать отдельную функцию. Хотя компиляторы поддерживают много возможностей из C++ для C, это идеологически не совсем правильно. В Си обычно делают функцию например CreateStructure, которая вызывается вместо 'new Structure'. А если нужно наследование, то это уже надо проектировать что-то свое наподобие Obj-C или использовать C++. Некоторые считают, что программирование в ОО стиле это не более чем привычка, я тут не очень с ними согласен, но доля правды есть. С другой стороны, и в C++ дублирование кода очень часто происходит в результате недостаточной рефлективности языка.
Еще момент. При объявлении память и так выделяется, в стеке, но не инициализируются свойства структуры. Есть такой язык Go, относительно новый, так там практика по умолчанию - это инициализация объекта, при которой его область памяти заполняется нулями. Ну и проектирование в соответствии с таким подходом. В сях есть функция memset.
В С нет классов, соответственно и конструкторов.