Pas tout-à-fait : l'expression en question doit plutôt être lue « ce qui est pointé par c va recevoir le résultat de a+b. ».
Un pointeur est une variable qui contient une adresse en mémoire. Le format de celle-ci est donc dépendant de l'architecture sur laquelle tu travaille mais, a contrario, sera complètement indépendant de la donnée qui se trouve à cette adresse.
Quand tu passes des arguments à une fonction, ceux-ci se retrouvent dans la pile et sont gérés comme s'il s'agissait de variables locales. Ainsi, mais si elles portent le même nom, les variables « a », « b » et « c » de ta fonction add sont complètement indépendantes de celle de ta fonction main et, par conséquent, les arguments en langage C sont toujours transmis par COPIE.
Mais dans le cas présent, ce que tu passes en troisième paramètre est littéralement « l'adresse de la variable c ». Puisque « c » est un entier, l'information en question est donc forcément un « pointeur sur un entier », d'où la manière de rédiger le prototype de add.
Passer à une fonction l'adresse d'une variable extérieure à cette fonction lui permet donc d'écrire dedans, entre autres.
# Adresse mémoire
Posté par Obsidian . En réponse au message Passage par référence. Évalué à 4.
Bonjour,
Pas tout-à-fait : l'expression en question doit plutôt être lue « ce qui est pointé par c va recevoir le résultat de a+b. ».
Un pointeur est une variable qui contient une adresse en mémoire. Le format de celle-ci est donc dépendant de l'architecture sur laquelle tu travaille mais, a contrario, sera complètement indépendant de la donnée qui se trouve à cette adresse.
Quand tu passes des arguments à une fonction, ceux-ci se retrouvent dans la pile et sont gérés comme s'il s'agissait de variables locales. Ainsi, mais si elles portent le même nom, les variables « a », « b » et « c » de ta fonction add sont complètement indépendantes de celle de ta fonction main et, par conséquent, les arguments en langage C sont toujours transmis par COPIE.
Mais dans le cas présent, ce que tu passes en troisième paramètre est littéralement « l'adresse de la variable c ». Puisque « c » est un entier, l'information en question est donc forcément un « pointeur sur un entier », d'où la manière de rédiger le prototype de add.
Passer à une fonction l'adresse d'une variable extérieure à cette fonction lui permet donc d'écrire dedans, entre autres.