TP4: Subtilités du C par contre-exemples

 

Dans cette partie du TP, nous allons vous montrer quelques comportements contre-intuitifs du C. Le but est de vous laisser essayer de réaliser des fonctions, pour vous amener à vous rendre compte que le comportement attendu n’est pas si simple à coder…

Exercice 1 – (la pile)
Ecrire une fonction int * alloc(int val) qui alloue 20 entiers et les initialise à val.
On fera comme suit :

int * alloc (int val){
   int tab[20];
   ...
   return tab;
}

Elle sera utilisée dans main, comme indiqué ci-après :

int main(int argc, char* argv[]){
   int * ptr;
   ...
   ...
   ptr = alloc(7);
   ...
}

Vérifier le contenu de la zone mémoire ainsi allouée à ptr au retour de alloc en utilisant printf. Les valeurs sont-elles correctes ? Pourquoi (on ne vous demande pas de corriger l’erreur)?

Exercice 2 – (1.: passage d’arguments, 2 : durée de vie des variables)

  1. Ecrire un programme dans lequel on échange les valeurs de deux réels déclarés dans main en utilisant une fonction echange(…), vérifier en utilisant printf.
  2. Dans cette fonction, ajouter un compteur sur le nombre d’appels, vérifier le bon fonctionnement du compteur.

Fin du TP4