Voyons un autre exemple. L'exemple suivant emploie une fonction appelée la place qui écrit la place des nombres entre 1 et 10.
#include <stdio.h>
int square(int x); /* Function prototype */
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
printf("Square of %d is %d\n", counter, square(counter));
return 0;
}
/* Define the function 'square' */
int square(int x)
{
return x * x;
}
Le rendement de ce programme sera montré comme suit :
Square of 1 is 1
Square of 2 is 4
Square of 3 is 9
Square of 4 is 16
Square of 5 is 25
Square of 6 is 36
Square of 7 is 49
Square of 8 is 64
Square of 9 is 81
Square of 10 is 100 |
La place de prototype de fonction déclare une fonction qui prend un paramètre de nombre entier et renvoie un nombre entier. Quand le compilateur atteint l'appel de fonction à la place dans le programme principal, il peut vérifier l'appel de fonction contre la définition de la fonction.
Quand le programme atteint la ligne qui appelle la place de fonction, le programme saute à la fonction et exécute cette fonction avant de reprendre son chemin par le programme principal. Des programmes qui n'ont pas un type de retour devraient être déclarés en utilisant le vide. Ainsi les paramètres à la fonction peuvent être passage par Value ou passage par Reference.
Une fonction récursive est une fonction qui s'appelle. Et ce processus s'appelle la récursion.
Passer par Value Functions
Les paramètres de la fonction carrée dans l'exemple précédent sont passés par valeur. Ceci signifie que seulement une copie de la variable a été passée à la fonction. Aucun changement à la valeur ne sera reflété de nouveau à la fonction appelante.
L'exemple suivant emploie la passer-par-valeur et change la valeur du paramètre passé, qui n'a aucun effet sur la fonction appelante. Le count_down de fonction a été avoué aussi vide qu'il n'y a aucun type de retour.
#include <stdio.h>
void count_down(int x);
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
count_down(counter);
return 0;
}
void count_down(int x)
{
int counter;
for (counter = x; counter > 0; counter--)
{
printf("%d ", x);
x--;
}
putchar('\n');
}
Le rendement du programme sera montré comme suit :
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1 |
|