Révisions 1 • Expressions et fonctions
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.