int *d;
*d = malloc(sizeof(int) * p);
と
int *d;
d = (int *)malloc(sizeof(int) * p);

どう違うのでしょうか?