Почему нет строки кода: char * n = mallo c (sizeof (int)); выдает ошибку?
Поскольку язык программирования C не имеет stati c проверки типов и позволяет писать код, который не является "безопасным для типов". Интерфейс, предоставляемый malloc
, возвращает указатель, который является просто абстрактным void*
указателем, который может использоваться любым возможным способом и может быть свободно преобразован в любой другой тип указателя.
Язык C позволяет для приведения значения между любыми двумя типами, и нет никакой проверки типа присвоений. Вы можете делать любые ошибки, и компилятор не обязан сообщать о них каким-либо образом. Мы, C программисты, несем ответственность за написание правильного C кода, который читабелен, понятен, корректен и, что наиболее важно, следует правилам языка, чтобы не было «неопределенного поведения».