Attention : description volontairement simpliste :aie:
Houla. Beaucoup de confusion sur le sujet.
Personnellement, je fais un parallèle entre le pointeur et l'adresse mémoire.
Imaginons que la mémoire soit un grand tableau d'octets, l'adresse mémoire serait l'index de ce tableau.
Code:
1 2 3 4
| byte[] RAM = new byte[1000000000];
int index = 120;
RAM[index] = 0xFF; // "index" représente l'adresse mémoire, ici l'adresse 120 |
Le pointeur est une structure qui permet de manipuler l'adresse mémoire (donc de manipuler l'index du tableau). En particulier, on peut créer un pointeur, modifier sa valeur d'adresse (= la valeur de l'index), aller a la position suivante/précédente (index+1 ou index-1), récupérer le contenu de la mémoire (= le contenu du tableau pour l'index courant), ...
Code:
1 2 3 4 5 6 7 8
| class Pointer {
int index=0; // représente l'adresse mémoire
void set(int i) {index = i ;}
void next() {index++;}
byte getContent() {return RAM[index];}
void setContent(byte b) {RAM[index]=b;}
} |
Le C utilise beaucoup les pointeurs (en particulier pour les tableaux dynamiques et les chaines de caractères). Les pointeurs en C sont extrêmement puissants (on peut effectuer des opérations arithmétiques avec). Ils permettent également de manipuler des types (struct/union) et pas seulement des octets.
En java, il n'y a pas cette notion de pointeur. La notion la plus proche est la référence, mais on ne peut pas la manipuler.