nawbacan> Ada95 ? Ca ne m'étonne pas !
Tout à fait l'esprit de ce langage : disposer de tous les outils performants connus, pour n'avoir à utiliser les plus puissants (et les plus dangereux donc) que quand on en a vraiment besoin.
Jacouille> Je te comprends parfaitement. Moi-même, j'ai mis un certain temps avant de comprendre l'intérêt des pointeurs (mais j'apprenais par moi-même à l'époque, je ne faisais pas encore d'études en informatique). C'est vrai, quelle est l'utilité d'un pointeur sur entier quand un simple entier suffit ? En fait, les pointeurs commencent à être intéressants dans le cas suivant. Supposons que l'on définisse la structure suvante:
typedef struct _Noeud {
int info;
struct _Noeud suivant;
} Noeud;
et puis la fonction:
Noeud* nouveau_noeud(int info)
{
Noeud* noeud = (Noeud*) malloc(sizeof(Noeud));
noeud->info = info;
noeud->suivant = NULL;
return noeud;
}
La fonction nouveau_noeud() permet de créer facilement un... nouveau noeud, justement.
Et bien là où ça devient intéressant, c'est quand tu réalises qu'avec cette structure, tu peux attacher plein de "noeuds" les uns aux autres, "à la queue-leu-leu" (en écrivant noeud1->suivant = noeud2;".
Certes, un seul noeud revient à un entier, mais à un entier auquel tu peux attacher un autre entier, auquel lui-même, tu peux attacher encore un troisième entier, etc.
Bref, c'est un peu comme un tableau d'entiers, mais dont la taille varierait selon tes besoins... et quasiment sans aucune limite supérieure (en fait, globalement, la limite, c'est toute la mémoire disponible dans ta machine... ce qui fait un sacré paquet de noeuds !).
La structure de données que j'ai décrite ci-dessus est la structure dite de "Liste". C'est la plus simple structure algorithmique requérant des pointeurs, et une fois qu'on l'a comprise, on peut attaquer des structures de données (qui requièrent aussi des pointeurs) plus complexes -- mais toujours aussi utiles -- comme les files d'attente, les arbres (binaires ou autres), les graphes, ....
Donc une fois que tu as compris ça, le reste devrait venir plus facilement.
Quand aux autres raisons sur l'utilité des pointeurs -- genre c'est permet de faire des programmes plus optimisés -- tu peux les oublier, au moins pour le moment. La programmation est suffisamment compliquée comme ça pour n'utiliser les pointeurs que quand il y en a vraiment besoin, c'est-à-dire quand l'algorithmique elle-même y fait appel (ceci dit, savoir utiliser les pointeurs quand on en a besoin nécessite de savoir les utiliser... tout court !).
De toute façon, dans les langages un minimum évolués, le compilateur (s'il est un tant soit peu intelligent) fera ce qu'il faut pour rendre ton code optimisé, et mettra des pointeurs dans le code généré quand il en faut.
--Message édité par BifaceMcLeOD--