erf, j'arrive trop tard, il a tout compris.
De touta façon j'arrive mal à expliquer, je me comprend tout seul, mais les autres comprennent rarement mes expliquations.

Sinon juste pour revenir sure les histoires des var locales/globales, on passe en effet l'adresse d'une var locale (déclarée dans _main par ex) à une fonction (mafonc()) par un pointeur, et du coup à partir de mafonc(), on peut tout faire tout nos opérations sur celle qui est déclaré dans _main
mais comme dit kevin, ce n'est vraiment pas l'utilisation première d'un pointeur !
Un pointeur est bien plus souvent utilisé pour referencer un tas de variables et y acceder rapidemment par arithmétique de pointeur (on passe aux adresses successives par des sommes ou des différence), voilà comment on fait dans un tableau (matrice).
Ex : l'adresse de mat[0][0] est celle contenue dans "mat" !
En fait, mat est un pointeur, pointant sur le 1er élément du tableau, dont les éléments sont tous "empilé" sur la pile (ou en RAM), donc à des adresses successives.
Par ex, pour acceder à mat[0][1], il suffit de faire *(mat + 1), on a ajouté 1, donc on est passé à l'élément suivant, et grace à l'indirection " * ", on a la valeur de cette éléments et non l'adresse.
Enfin moi je m'en sers surtout pour ça.
PS : corriger moi en cas d'erreur, j'ai écris ça vite fait, j'ai pas le temps de tout vérifier.
