Зачем нужно приведение указателя?

Есть такой код:

int *i=(int*)malloc(50*sizeof(int));

У меня 2 вопроса:

1)Зачем нужно явное приведение типа (int*)?Что происходит когда мы явно пишем

2)Шилдт пишет про то что,когда мы пишем sizeof(int),мы организовываем машинонезависимость.В чем заключается эта независимость?Размер int в разных системах разный?


Ответы (1 шт):

Автор решения: HolyBlackCat

Каст (int *) меняет тип указателя с void * на int *, значение указателя при этом не меняется. В C то же самое происходит автоматически и без каста (каст не нужен), а в С++ без каста не скомпилируется (потому что типы указателей не совпадают).

Размер int в разных системах разный?

Теоретически может быть разный, но чаще всего int 4-байтовый.

→ Ссылка