« Programmation C/Pointeurs » : différence entre les versions

Contenu supprimé Contenu ajouté
DCimarosa (discussion | contributions)
Ajout de la précision sur le passage de tableaux multidimensionnels comme argument d'une fonction
DCimarosa (discussion | contributions)
Ligne 256 :
Comme on vient de le voir, l'intérêt principal d'une allocation dynamique est de pouvoir lancer son programme sans connaître la taille du tableau qu'on utilisera; celle-ci sera établie en cours de fonctionnement.
Cependant, un autre intérêt du tableau dynamique est de pouvoir être passé comme argument d'une fonction pour des '''tableaux à plusieurs dimensions'''.
 
En reprenant la fonction malloc_3d() vue précédemment, on peut écrire :
<source lang="c">
int fonction_3d (int ***tab);
 
int main(int argc, char **argv)
{
/* Tableau dynamique créé avec des malloc() */
int ***tab = malloc_3d(2, 10, 10);
 
fonction_3d (tab);
 
return EXIT_SUCCESS;
}
/* fonction recevant le tableau en 3d */
void fonction_3d (int ***tab)
{
/* On peut utiliser ici la notation tab[i][j][k] en veillant à
ce que i, j, k ne sortent pas des bornes du tableau -> dans
cet exemple tab[3][9][9] est illégal alors que tab[1][3][7]
peut être utilisé.
On ne pourra pas savoir si on sort du tableau !
*/
}
</source>
 
== Pointeurs vers fonctions ==