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)
- 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.
- Dans cette fonction, ajouter un compteur sur le nombre d’appels, vérifier le bon fonctionnement du compteur.
Fin du TP4