« Langage C/Pointeurs » : différence entre les versions
Contenu supprimé Contenu ajouté
m Add Syntaxhighlight |
m Add Syntaxhighlight |
||
Ligne 14 :
<syntaxhighlight lang="c">
</syntaxhighlight>
Ligne 23 :
==== Accès direct et indirect à une variable: ====
<syntaxhighlight lang="c">
printf("accès direct sur la valeur de x: %d \n", x);▼
</syntaxhighlight>
Il faut bien comprendre que l'accès direct comme indirect agit sur la variable ''x''. C'est-à-dire que l’on modifie réellement la valeur de ''x'' dans les deux cas.
Ligne 34 ⟶ 36 :
==== Tableau simple ====
int *ptr;▼
int tab[10];▼
<syntaxhighlight lang="c">
ptr=tab;▼
</syntaxhighlight>
Pour un tableau, il n'y a pas besoin de recourir au caractère '&' car ''tab'' sans indice prend la valeur de l'adresse en mémoire du premier élément du tableau ''tab''.
Ligne 44 ⟶ 48 :
===== Accès au différents éléments d'un tableau =====
<syntaxhighlight lang="c">
*(ptr+x)= 0; // revient à dire "tab[x]=0"
</syntaxhighlight>
==== Tableau deux dimensions ====
<syntaxhighlight lang="c">
int tab[2][6];
</syntaxhighlight>
Le tableau à deux dimensions sera ainsi "déroulé" et ramené à un tableau simple. L'accès aux différents éléments du tableau se fait donc comme pour un tableau simple.
Ligne 60 ⟶ 68 :
Définissons une structure pour ensuite l’utiliser dans les différents exemples:
<syntaxhighlight lang="c">
int x;
int y;
char nom_point;
</syntaxhighlight>
Il suffit ensuite de déclarer un pointeur de type struct nom_de_la_structure et de le faire pointer sur ''pointsA''.
<syntaxhighlight lang="c">
ptr=pointsA;
</syntaxhighlight>
==== Accès aux éléments d'une structure ====
<syntaxhighlight lang="c">
printf("Accès direct à x= %d \n", pointsA.x);▼
</syntaxhighlight>
Comme on peut le constater, le '.' est remplacé par une flèche '->' lorsqu'on manipule les éléments d'une structure avec un pointeur. Il existe une autre méthode pour y accèder qui se rapproche plus de ce qui a été vu plus haut:
<syntaxhighlight lang="c">
printf("Autre accès indirect à x=%d \n", ((*ptr).x));▼
</syntaxhighlight>
=== Conclusion ===
|