Débutant seul en C avec comme seule aide la documentation, voilà l'explication que je souhaiterais avoir

2 instructions du programme main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 int *tab_div;
 tab_div=liste_diviseurs_stricts(n);
les premières instructions de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
int *liste_diviseurs_stricts (int p) {
    int *tab;
    tab = (int*)malloc((p/2)*sizeof(int));
   etc ...}
Quel rôle joue int * dans le nom de la fonction ?
Quel rôle joue (int*) dans tab=(int*)malloc(etc..) ? (je connais le rôle de malloc pour la détermination de la taille mémoire à réserver)

Je pose ces 2 questions car je n'ai pas trouvé de réponses claires dans la documentation.

....... Merci d'avance ...........
PS le programme donne des résultats cohérents ....