Procédure avec paramètres de sortie et d'entrée-sortie en C

Principe: Pour rendre compte des paramètres de sortie et d'entrée-sortie en C, on va passer les adresses des variables plutôt que de passer les valeurs des variables. On passe l'adresse de l'original plutôt que de faire une photocopie. Par indirection on va ainsi modifier l'environnement de l'appelant.

exemple:
/* entête du programme */
...
/entête de la fonction*/
...
void coordPoint(int deplX, int deplY, int* pointX, int* pointY) /* poinX et pointY sont de pointeurs d'entier, ils auront comme valeur une adresse*/
{
   *pointX = *pointX + deplX ;  
/* Affectation par indirection de pointX (*pointX c'est l'entier pointé par pointX */
   *pointY = *pointY + deplY;   /* Affectation par indirection de pointY (*pointY c'est l'entier pointé par pointY */
}


int main()
{ /* Déclaration des variables */

  int cPointX = 3;
  int cPointY = 8;
  int leDeplX = 4;
  int leDeplY = 9;

 
/* Début des instructions */
  printf("Les coordonnées du point sont: X=%d" et Y=%d",cPointX, cPointY);
/* cPointX=3 et cPointY=8 */
  coordPoint(leDeplX,leDeplY,&cPointX,&cPointY); /* On passe les adresses des coordonnées du point */
  printf("Les nouvelles coordonnées du point sont: X= %d et Y= %d", cPointX, cPointY);  
/* cPointX=7 et cPointY=17*/
}


suivant          plan