Besoin d'un peu d'aide sur les pointeurs.
Bonjour à tous ,
je débute en programmation et en C++ et j'ai quelques difficultées avec les pointeurs .....
Selon ce que j'ai pu comprendre , on utilise les pointeurs avec une fonction comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void triplePointeur(long *pointeurSurNombre);
int main(int argc, char *argv[])
{
long nombre = 5;
triplePointeur(&nombre); // On envoie l'adresse de nombre à la fonction
printf("%ld", nombre); // On affiche la variable nombre. La fonction a directement modifié la valeur de la variable car elle connaissait son adresse
return 0;
}
void triplePointeur(long *pointeurSurNombre)
{
*pointeurSurNombre *= 3; // On multiplie par 3 la valeur de la variable nombre
} |
En gros pour utiliser mon pointeur dans ma fonction , je dois mettre * devant , sinon je travail non pas avec la valeur du pointeur , mais l'adresse en mémoire .
Cependant je trouve beaucoup de code comme celui-ci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| // Prototype de la fonction d'affichage
void affiche(long *tableau, long tailleTableau);
int main(int argc, char *argv[])
{
long tableau[4] = {10, 15, 3};
// On affiche le contenu du tableau
affiche(tableau, 4);
return 0;
}
void affiche(long *tableau, long tailleTableau)
{
long i;
for (i = 0 ; i < tailleTableau ; i++)
{
printf("%ld\n", tableau[i]);
}
} |
Deja première constatation , on appelle la fonctionne affiche() comme ceci :
Code:
affiche(tableau, 4);
alors que moi j'aurais plutôt vu :
Code:
affiche(&tableau, 4);
afin de passer l'adresse au pointeur .
Ensuite , dans la fonction affiche , le pointeur tableau est utilisé sans une * devant . un peu comme on aurait pu le faire avec une référence .
Code:
printf("%ld\n", tableau[i]);
Il ne faut pas écrire plutôt ceci ? :
Code:
printf("%ld\n", *tableau[i]);
Dans ce cas , quelle est la différence entre le pointeur et la référence ... ?
Merci d'avance pour votre aide .