Comprend pas une ligne de programme
cole
-
cole -
cole -
Bonjour,
voila un programme que m'a donné mon prof :
void triplePointeur(int *pointeurSurNombre);
int main(int argc, char *argv[])
{
int nombre = 5;
triplePointeur(&nombre); // On envoie l'adresse de nombre à la fonction
printf("%d", 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(int *pointeurSurNombre)
{
*pointeurSurNombre *= 3; // On multiplie par 3 la valeur de la variable nombre
}
1) je ne comprend pas que signifie le signe *= juste apres pointeursurnombre dans la fonction triple pointeur.
2) est ce que *ponteurSurNombre désigne directement la variable "nombre" donc 5 ?
merc pour votre aide
voila un programme que m'a donné mon prof :
void triplePointeur(int *pointeurSurNombre);
int main(int argc, char *argv[])
{
int nombre = 5;
triplePointeur(&nombre); // On envoie l'adresse de nombre à la fonction
printf("%d", 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(int *pointeurSurNombre)
{
*pointeurSurNombre *= 3; // On multiplie par 3 la valeur de la variable nombre
}
1) je ne comprend pas que signifie le signe *= juste apres pointeursurnombre dans la fonction triple pointeur.
2) est ce que *ponteurSurNombre désigne directement la variable "nombre" donc 5 ?
merc pour votre aide
A voir également:
- Comprend pas une ligne de programme
- Partage de photos en ligne - Guide
- Programme demarrage windows - Guide
- Formulaire en ligne de meta - Guide
- Mètre en ligne - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
8 réponses
a *= b; est équivalent à a = a*b; (en tout cas au niveau du code, mais au niveau de l'exécution la première est un chouillat imperceptible plus rapide)
triplePointeur(&nombre); comme c'est marqué en commentaire, tu envoies l'adresse de nombre à la fonction = tu demandes à la fonction de traiter son adresse (donc pas la valeur de nombre), donc oui.
D'ailleurs, par rigueur, je corrige le commentaire "// On multiplie par 3 la valeur de la variable nombre" qui est faux. Si tu appelles à nouveau la fonction avec une seconde variable toto, triplePointeur(&toto); c'est bien la valeur de variable toto qui sera modifiée.
triplePointeur(&nombre); comme c'est marqué en commentaire, tu envoies l'adresse de nombre à la fonction = tu demandes à la fonction de traiter son adresse (donc pas la valeur de nombre), donc oui.
D'ailleurs, par rigueur, je corrige le commentaire "// On multiplie par 3 la valeur de la variable nombre" qui est faux. Si tu appelles à nouveau la fonction avec une seconde variable toto, triplePointeur(&toto); c'est bien la valeur de variable toto qui sera modifiée.
donc on peut écrire a la place de *pointeurSurNombre *= 3 <==> *pointeursurnombre = pointeursurnombre * 3 ?
Presque car si tu prends l'explication de bizu53, (a *= b <==> a = a * b),
dans ton cas a = *pointeursurnombre (*pointeursurnombre correspondant a la valeur de la variable stockée a l'adresse memoire pointeursurnombre )
dans ton cas a = *pointeursurnombre (*pointeursurnombre correspondant a la valeur de la variable stockée a l'adresse memoire pointeursurnombre )
haaaa ok, j'ai compris (enfin j'espere) donc on peut l'écrire *pointeursurnombre = *pointeursurnombre * 3; c'est sa?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ce n'est pas réellement compliqué, ça l'est quand on n'a pas de représentation en fait.
Un pointeur n'est rien d'autre qu'une variable qui pointe sur une autre.
Et pour "faire comprendre au code" qu'on veut utiliser la valeur pointée ou pas, on utilise l'étoile ou pas. Et pour "faire comprendre au code" qu'on veut utiliser celle qui pointe sur une valeur donnée(*), on utilise le &. C'est tout :)
*en mémoire, parce que bien sûr il peut y avoir plusieurs pointeurs sur une même variable.
Un pointeur n'est rien d'autre qu'une variable qui pointe sur une autre.
Et pour "faire comprendre au code" qu'on veut utiliser la valeur pointée ou pas, on utilise l'étoile ou pas. Et pour "faire comprendre au code" qu'on veut utiliser celle qui pointe sur une valeur donnée(*), on utilise le &. C'est tout :)
*en mémoire, parce que bien sûr il peut y avoir plusieurs pointeurs sur une même variable.