En C, lorsqu'une variable est passée à fonction, c'est par copie. Ce qui veut dire que si la variable (de la fonction) a bien le bon contenu, elle n'a pas la même adresse que la variable de l'appelant. Ce sont donc deux variables différentes.
Tu peux donc, dans la fonction, modifier autant que tu veux la variable, cela ne sera pas répercuté sur la variable de la fonction appelante:
void called(int var) {
var=var+1;
}
void caller(void) {
int var;
var=1;
printf("var=%d\n",var); // 1 est affiché
called(var);
printf("var=%d\n",var); // 1 est affiché
}
Si tu veux modifier une variable passée à une fonction, tu dois en fournir l'adresse:
void called(int *var) {
*var=*var+1;
}
void caller(void) {
int var;
var=1;
printf("var=%d\n",var); // 1 est affiché
called(&var);
printf("var=%d\n",var); // 2 est affiché
}
- Edité par edgarjacobs 11 février 2019 à 22:54:49
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Donc si j'ai bien compris, si tu passes en paramètre "**ptr" tu passes donc l'adresse d'une adresse ? Le double pointeur je voyais ca plustot comme une matrice ou un tableau de tableau.
Donc si j'ai bien compris, si tu passes en paramètre "**ptr" tu passes donc l'adresse d'une adresse ? Le double pointeur je voyais ca plustot comme une matrice ou un tableau de tableau.
Je sais pas si ca sera plus claire pour toi mais **ptr c'est un pointeur sur pointeur, quand tu envois &ptr de *ptr qui donnera **ptr, tu envois l'adresse d'un pointeur.
D'une certaine manière, un pointeur est une variable normale, si tu veux pouvoir la modifier dans une autre fonction, tu dois envoyer l'adresse de cette variable ou bien la retourner.
**ptr peut être un double tableau ou pas. En fait, c'est toujours un double tableau à condition que tu acceptes que taille_longueur=taille_largeur=1
Juste au cas ou car j'ai l'impression de pas être hyper clair et je voudrais pas t'embrouiller
- Edité par BobbyLa Courgette 21 février 2019 à 16:56:18
Ajouter un caractère à une position définie
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent