« Programmation C/Pointeurs » : différence entre les versions
Contenu supprimé Contenu ajouté
→Tableaux dynamiques : Modification du code |
→Tableaux dynamiques : modification du texte |
||
Ligne 147 :
Cet exemple alloue un tableau de 256 cases. Bien que la variable soit un pointeur, il est dans ce cas permis d'accéder aux cases de 0 à 255, soit entre les adresses <code>&tableau[0]</code> et <code>&tableau[255]</code>, incluses.
=== Tableaux dynamiques à
Tout comme on pouvait
<source lang="c">
int ** matrice;
</source>
L'allocation d'un tel objet va se dérouler en plusieurs étapes (une par étoile), on alloue d'abord l'espace pour un tableau de pointeurs vers entier. Ensuite, on alloue pour chacun de ces tableaux l'espace pour un tableau d'entiers. Si on veut une matrice 4x5 :
<source lang="c">
#define LIGNES 4
#define COLONNES 5
int i;
int ** matrice = malloc(sizeof *matrice * LIGNES);
Ligne 165 ⟶ 168 :
}
</source>
Pour libérer l'espace alloué
<source lang="c">
for(i = 0; i < LIGNES; i++)
Ligne 175 ⟶ 179 :
</source>
=== Tableaux dynamiques à trois dimensions ===
Voici maintenant un exemple d'une fonction créant un tableau à trois dimensions avec des expressions génériques et surtout les tests des valeurs de retour des fonctions <code>malloc();</code> appelées (usage conseillé) :▼
▲Voici maintenant un exemple d'une fonction créant un tableau à trois dimensions avec
<source lang="c">
int *** malloc_3d(int nb_tableau, int lignes, int colonnes)
|