Le problème de la notation "*" en C, c'est qu'elle sert à plusieurs choses radicalement différentes.
0. La multiplication (mais c'est HS ici
).
1. Pour accéder à une valeur stockée dans une case mémoire :
Par exemple :
int a = 32;
long a_addr = &a;
printf("%d\n", *a_addr);
Cet usage étant de nos jours peu utile en lui même.
2. Le passage d'une variable par référence lors d'un appel de fonction
Par exemple :
void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; }
qu'on appelle
int a = 32;
int b = 52;
swap(&a, &b);
Cet usage est fondamental. Sans ça, on est très limité en expressivité et en performance du code.
3. Pour renvoyer (l'adresse d') une valeur non atomique :
Par exemple :
int* create_array(int size) { ...malloc... }
Cet usage est lié à la gestion de la mémoire de façon générale. C'est important, mais beaucoup moins urgent à apprendre que le point précédent.