Bonjour, je souhaiterai avoir un renseignement sur le nom des fonctions :
par exemple si on a :
1 2 3 4 5 6 7 8
|
int addition(int x,int y)
{
printf("adresse de addition = %d \n\n", &addition);
printf("adresse de x = %d \n", &x);
printf("adresse de y = %d \n", &y);
return x + y;
} |
Le nom de la fonction est une adresse pourquoi cette adresse ne correspond pas à l'adresse de l'argument ici int x. Sur mon ordi l'adresse du nom de la fonction est : 4234688 mais l'adresse de l'argument int x est : 2271920.
Je pensais que l'adresse du nom de la fonction était identique à l'adresse du premier argument de la fonction donc ici int x, mais ce n'est pas le cas. Est-ce que le nom de la fonction est un pointeur sur le premier argument de la fonction ?
Peut-on accéder à la valeur du nom de la fonction (pas à son adresse dans la mémoire) en faisant :
printf ("valeur de addition = %d \n",addition);
Cette valeur devrait normalement correspondre à l'adresse du premier argument int x mais en faite la valeur de addition est identique à son adresse. Donc comment le compilo peut-il savoir qu'il faut aller à l'argument int x si les 2 adresses (celle du nom de la fonction et celle du premier argument int x) sont différente.
A quoi correspond l'adresse du nom de la fonction ? Quelle relation y a t-il entre l'adresse du nom de la fonction et les adresses des arguments et : si on fait un schéma de mémoire ou est placé l'adresse du nom de la fonction et les 2 arguments de la fonctions.
Comment le compilo peut-il accéder au argument de la fonction si l'adresse du nom de la fonction ne correspond pas au premier argument de celle-ci ?
J'espère avoir était suffisamment claire merci par avance.
Partager