Les fonctions

Il y a 4 éléments à une déclaration de fonction :

  • le type de renvoi ;
  • le nom de la fonction ;
  • la liste de paramètres ;
  • le corp de la fonction.

Sans eux ont ne peut pas se servir d’une fonction.

La liste de paramètre contient des couples type-nom comme des variables, séparés par des virgules si vous en avez plusieur.

Dans une fonction on ne ré-assigne pas les paramètres avant de les avoir lus (sauf si on a une vraie bonne raison de le faire), car c’est la fonction appelante qui décide des valeurs lorsqu’elle fait son appel avec ses arguments.

// appel a: lhs vaut 1 et rhs vaut 2
// appel b: lhs vaut 5 et rhs vaut 3
// appel c: lhs vaut 12 et rhs vaut -8
int add(int lhs, int rhs)
{
	return lhs + rhs;
}

int main(void)
{
	// à chaque appel, les arguments servent à mettre une valeur dans
	// les paramètres de la fonction
	add(1, 2); // appel a
	add(5, 3); // appel b
	add(12, -8); // appel c
}

Types d’expressions

Les littéraux:

12 (int)
3.14 (float)
'a' (char)
"hello world" (char *)

Les références: si j’ai une variable déclarée int c, alors dans une expression je peux écrite c pour lui faire référence et pour que sa valeur y soit insérée. Attention: il faut bien qu’on face référence à quelque chose qui a déjà été déclaré ET initialisé.

Exemple:

int c;

c = 12;
printf("%d\n", c + 2); // ça affiche 14.

Les opérations: expr1 + expr2. Les opérateurs arithmétiques de base étant +-*/% et les opérateurs de comparaisons ==, !=, <, <=, >=, >.

int c;

c = 12 + 4;
printf("%d\n", c); // ça affiche 16.

Les appels de fonctions:

int add(int lhs, int rhs);

int main(void)
{
    int res;

    res = add(1, 21);
    return res;
}

int add(int lhs, int rhs)
{
    return lhs + rhs;
}

Les endroits où une expression est attendue

  • mot clé return;
  • argument d’appel de fonction ex. add(expr1, expr2);
  • assignation, ex. a = expr;
  • opérande d’opération, ex expr1 * expr2.