Зачем нужно писать указатель в скобках перед вызовом функции?
Я наткнулся на следующий пример в учебнике:
#include <stdio.h>
#include <stdlib.h>
int main()
{
// This pointer will hold the
// base address of the block created
int* ptr;
int n, i;
// Get the number of elements for the array
n = 5;
printf("Enter number of elements: %d\n", n);
// Dynamically allocate memory using malloc()
ptr = (int*)malloc(n * sizeof(int));
return 0;
}
Вроде бы все логично, функция malloc() выделяет память под 5 целых чисел, но перед этим идет (int*), зачем это нужно и что оно делает, как это называется? Я ещё не встречал подобной записи, когда перед вызовом функции было бы что-то кроме самой переменной.
А ещё я попробовал записать вместо:
ptr = (int*)malloc(n * sizeof(int));
Так:
ptr = malloc(n * sizeof(int));
И никакой ошибки не произошло, я могу работать с этим указателем (ptr) и тд. Зачем же там (int*)?