Cours de Programmation C, tutoriel & guide de travaux pratiques en pdf.
Déclaration d’une fonction
Si une fonction est définie dans le code source avant la portion de code qui l’utilise, il n’est pas nécessaire de la déclarer. Dans le cas contraire il faut la déclarer en mettant son prototype dans l’entête du programme (c’est ce qu’on fait d’une manière particulière avec les fichiers d’inclusion « .h » afin de pouvoir utiliser des fonctions prédéfinies). Exemple : void afficher_car(int, int);
/* déclaration */ int main() { char c = ‘x’; afficher_car(‘-‘, 10);
/* appel de la fonction
*/ afficher_car((int) c, 5); return 0;
}
void afficher_car(int c, int n)
/* définition */
{
/* Fonction qui affiche n fois une lettre.
*/ while (n–) putchar(c);
/* return implicite */
}
Comprendre le passage par valeur
Une fonction ne prend en argument que des valeurs. Attention, si on passe en argument une variable, on passe en réalité une copie de sa valeur en argument. Une variable ou une expression compliquée passées en argument sont toujours remplacées par leur valeur : #include <stdio.h>
int main() { int a = 2, b = 3; printf(« %d\n », 5); printf(« %d\n », a);
printf(« (%d+%d)^2 = %d\n », a, b, (a*a+b*b+2*a*b)); return 0;
}
Ce programme affiche : ./a.out 5 2 (2+3)^2 = 25 Le passage par valeur implique qu’on ne peut changer la valeur d’une variable passée en argument. Par exemple, dans le programme suivant, la fonction ne modifie pas la valeur de a :
#include <stdio.h> void mafonction(int x)
{
x = 0;
} int main()
{ int a = 1;
mafonction(a);
/* valeur de ‘a’ n’est pas modifiée */
printf(« %d », a);
/* affiche 1 */
return 0;
}