Зачем нужно писать указатель в скобках перед вызовом функции?

Я наткнулся на следующий пример в учебнике:

#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*)?


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