Sommaire

Allocation dynamique de tableaux

Questions allocation dynamique de tableaux

Voici quelques questions pour vous aider à synthétiser et retenir des contenus qui nous paraissent essentiels dans cette section :

Peut-on créer un tableau à partir d’un pointeur ?

Comment créer un tableau à une dimension à partir d’un pointeur ?

Comment créer un tableau à deux dimensions à partir d’un pointeur ?

Une fonction peut-elle retourner un pointeur alloué ?

Quelles différences y-a-t-il entre un tableau static et un tableau dynamique ?

Quelles sont toutes les fonctions C d’allocation mémoire ?

1. Allouer un tableau avec un pointeur

Voici une allocation dynamique pour un entier :

int *ptr; 
    ptr=(int*)malloc(sizeof(int) );

ce qui est identique à :

ptr=(int*)malloc(sizeof(int) * 1);

Si ptr contient l’adresse du premier élément d’un tableau de un élément, cela permet d’écrire indifféremment :

*ptr=10; 
// ou 
ptr[0]=10;

Les deux notations sont équivalentes.

Et pour avoir plus d’un élément dans le tableau, il suffit d’allouer davantage de mémoire, au prorata du nombre souhaité des éléments. Par exemple, pour avoir un tableau de 16 entiers :

int *ptr 
    ptr=(int*)malloc(sizeof(int)*16);

Le parcours du tableau est habituel :

int i, 
    for (i=0; i<16; i++){ 
        ptr[i]=rand()%100; ...