Une variable globale, étant accessible partout, est fortement déconseillée (que ce soit en C, en VB ou autre d'ailleurs). C'est le meilleur moyen de produire du code spaghetti.
Le problème avec une variable globale, c'est que ça rend le code très difficile à maintenir. En appelant une fonction, tu ne sais pas si celle-ci va modifier ta variable globale ou non, et dans quelle mesure. C'est très bancale de s'appuyer là-dessus.
Comme toute fonctionnalité d'un langage, une fonctionnalité est là pour être utilisé, mais certaines sont à manipuler avec grande parcimonie.
Les pointeurs ne sont pas là pour émuler des variables globales, c'est un tout autre mécanisme. On peut très bien créer un code sans pointeur ni variable globale.
Dans le contexte dont tu parles, les pointeurs sont essentiellement utilisés pour éviter des copies inutiles, et être sur que l'on agit sur les variables passées en argument.
Petit exemple très simple:
Code C/C++ :
#include <stdio.h>
void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(void)
{
int var1 = 45;
int var2 = 97;
printf("%i %i\n", var1, var2);
swap(&var1, &var2);
printf("%i %i\n", var1, var2);
return 0;
}
Si tu penses ne pas être assez à l'aise avec les pointeurs, voici un petit cours:
http://0217021.free.fr/Cours/pointeurs.pdf