IN 101 - Cours 7
1 Passage d’argument par adresse
Une fonction ne peut retourner qu’une seule valeur au plus.
On voudrait parfois plusieurs valeurs r´esultat.
En C, les param`etres sont pass´es par valeur :
1. Ils sont ´evalu´es,
2. ils sont copi´es sur la pile avant l’appel.
⇒Impossible de modifier une variable de l’appelant depuis l’appel´e.
Pour s’en sortir, dans la fonction appelante on va passer l’adresse des variables dans lesquelles
stocker (retourner ) les r´esultats.
Dans la fonction appel´ee, l’argument re¸cu est une adresse, donc le param`etre est un pointeur.
#include <s t d i o . h>
void f ( int ∗v )
{
(∗v )++ ;
}
int main ( )
{
int x = 5 ;
f (&x ) ;
p r i n t f ( ”x = %d\n” , x ) ; // On at te n d 6 comme a f f i c h a g e .
return ( 0 ) ;
}
Un tableau ´etant un pointeur sur la 1`ere case, il est forc´ement pass´e par adresse.
2 Complexit´e
Il existe toujours plusieurs algorithmes pour r´esoudre un probl`eme. Certains sont plus efficaces que
d’autres.
La complexit´e d’un algorithme mesure asymptotiquement son efficacit´e intrins`eque en fonction
de la taille des donn´ees `a traiter.
L’efficacit´e en terme de m´emoire est la complexit´e spatiale.
L’efficacit´e en terme de temps est la complexit´e temporelle.
2.1 Complexit´e temporelle
On compte le nombre d’op´erations de base n´ecessaires et on regarde comment ce nombre
´evolue asymptotiquement.
On cherche `a encadrer ce nombre lorsque la taille de l’entr´ee tend vers +∞.
1