Algorithme : allocation et liberation de mémoire |
On peut allouer puis liberer de l'espace mémoire à un pointeur qui n'a pas eu d'affectation d'adresse d'une variable existante.
Algorithme C
nom_pointeur <--- allouer(taille(type)) nompointeur=(type *)malloc(sizeof(type)); liberer(nom_pointeur) free(nompointeur);
exemple:
int * ptr;
ptr=(int *)malloc(sizeof(int));
//allocation d'un espace mémoire la taille est celle qu'occupe une variable de type entier
* ptr = 15;
le contenu de l'espace mémoire pointé par PTR recoive la valeur 15
printf(''valeur pointée : %d'',*ptr); free(ptr);
3) Les pointeurs et les tableaux:
En C, le nom d'un tableau est considérer comme un pointeur gardant l'adresse du 1er élément du tableau appelé adresse de base du tableau.
Exemple:
int tab[10];
0 10
tab est un pointeur qui garde l'adresse de tab[0] première élément
Puisque les éléments d'un tableau occupent des espace mémoire contigues , on peut utiliser des pointeurs pour parcourir un tableau.
Utilisation de la notion d'indice et de la notion de pointeur pour parcourir un tableau
Notion d'indice Notion d'adresse Int tab[0]; int i;
//saisi for(i=0,i<10;i++) { printf(''Element: %d'',i+1); scanf(''%d'',&tab[i]); } //affichage for(i=0;i<10;i++) { printf(''element: %d=%d'',i+1,tab[i]); } Int tab[0]; int * ptr; //saisi
for(ptr = tab ; ptr < tab+10; ptr++) { printf(''Element : %d '' , ptr + 1 – tab); scanf(''%d'',ptr); }
//affichage for(ptr = tab ; ptr < tab+10 ; ptr++) { printf(''Element : %d = %d'',ptr+1 – tab,*ptr); }
|