Professional Documents
Culture Documents
Dans le monde merveilleux de lalgorithmique : Mais lidentificateur tab utilis seul dsigne ladresse de
tab : tableau[1..10] de entier tab[0]
Cration de 10 variables contigus de type
entier : tab[1], tab[2], .., tab[10] tab correspond &tab[0]
Et tab dsigne la variable compose des 10 Plus gnralement :
&tab[i] est quivalent tab+i
variables prcdentes
et tab[i] est quivalent *(tab+i)
Attention :
Les tableaux du C et du C++ ne correspondent Attention : Pas de contrle des dbordements possibles
pas une mise en uvre fidle de ce concept
ex : tab[10]=5; //Quest-ce que tab[10]???
LIF5 - 2004-2008 R. Chaine 1 LIF5 - 2004-2008 R. Chaine 2
1
Retour dun tableau dans une Arrgghhh! Retour de ladresse dun tableau local la
fonction (dtruit aprs lappel la fonction)
fonction C ou C++
Seule possibilit :
Que pensez-vous de la fonction suivante ? Retourner un tableau allou dans le tas !
int * doubler(const int tab[3])
// Prcondition : tab tableau d(au moins) 3 int initialiss
int * doubler(const int tab[3]) // Rsultat : adresse dun tableau de 3 int
{ // Charge lutilisateur de stocker cette adresse
// dans une variable et dinvoquer loprateur
int res[3]; // delete []sur cette variable quand il naura plus
for (int i=0;i<3;i++) // besoin du tableau
res[i]=2*tab[i]; {
int *res=new int[3];
return res; for (int i=0;i<3;i++)
res[i]=2*tab[i];
} return res;
LIF5 - 2004-2008 R. Chaine 7
} LIF5 - 2004-2008 R. Chaine 8
Chanes de caractres
Exemple dutilisation :
Les tableaux de char C/C++ servent galement manipuler
des chanes de caractres
int montab[]={1,2,3}; (de taille infrieure celle du tableau)
int *ptr; Possibilit dutiliser des fonctions de la bibliothque standard
ptr=doubler(montab); si \0 en fin de la chane (convention)