Programação c, pergunta muito curta?

int * x = malloc (sizeof (int) * 10);

Malloc aloca espaço suficiente para armazenar 10 inteiros e retorna um void * para o início do espaço alocado.

int * y = (int *) malloc (sizeof (int));

Malloc aloca espaço suficiente para armazenar um único inteiro e o tipo de retorno é convertido de um void * para um int *.

int * z = (int *) malloc (sizeof (int) * 10);

Malloc aloca espaço suficiente para armazenar 10 inteiros e o vazio * retornado que aponta para o início do espaço é convertido em um int *.

A diferença?

1 e 3 criam matrizes de inteiros, 2 cria um único inteiro, além disso, 1 e 3 convertem o tipo de retorno para corresponder ao tipo que está sendo atribuído. Algumas pessoas tratam isso como uma regra rígida e outras não, no final do dia ambos trabalham.

Qual é a diferença entre x, y, z?

int * x = malloc (sizeof (int) * 10);

int * y = (int *) malloc (sizeof (int));

int * z = (int *) malloc (sizeof (int) * 10);