В старых версиях C функции не могли указывать тип возвращаемого значения, и тип возвращаемого значения был автоматически int
.
И если объявлялась функция, возвращающая значение (явно или как в вашем случае неявно)) затем он должен вернуть значение, иначе у вас будет неопределенное поведение .
Также обратите внимание, что в более старых версиях C компиляторавтоматически объявлять функции, которые он никогда раньше не видел при вызове.И этот, и неявный тип возврата очень подвержены ошибкам и поэтому были удалены с помощью стандарта C99.
Наконец, примечание об использовании int
для указателей: часто в истории компьютеров, указателях и int
не равныНапример, в наши дни в 64-битной системе указатели обычно составляют 64 бита, а int
- 32 бита.Вы не можете поместить 64-битный указатель в 32-битный int
, независимо от того, как сильно вы пытаетесь.Это одна из причин, по которой вы никогда не должны разыгрывать результат malloc
.