Bonjour, je souhaiterai avoir un renseignement sur le nom des fonctions :
par exemple si on a :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.