Passage par adresse et par valeur

ismailzr99 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde j'ai un probleme je fais ppas la difference entre le passage par adresse et par valeur et quand l'utiliser
Merci d'avance
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,

En réalité, en C le passage se fait toujours par valeur. Si le paramètre a le type pointeur, on peut lui passer l'adresse d'une variable ou bien un pointeur du même type.
Comme on ne peut passer que des valeurs, la fonction ne reçoit qu'une copie et ne peut donc jamais modifier la variable initialement transmise. Heureusement, il y a les pointeurs. En déréférençant le pointeur (l'étoile mise devant), qui contient adresse on va pouvoir accéder à la variable initiale.
Exemple :
int x = 42;
printf( "%d" , x ); // printf n'a besoin que de la valeur
scanf( "%d" , &x ); // scanf a besoin de l'adresse, sinon il ne pourrait modifier la valeur de x
2
ismailzr99 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Merci donc pour conclure on peut jamais modifier la variable initiale par le passage par valeur
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Tout à fait. Y compris quand on veut modifier un tableau, le nom du tableau est passé et le tableau est modifiable; en réalité le nom du tableau est directement associé à un pointeur sur le 1er élément.
char tab[20];
scanf( "%s" , tab ); // pas de & ici car tab est équivalent à &tab[0]
0