Un double pointeur, est simplement un pointeur vers un pointeur. Une utilisation courante est pour les tableaux de chaînes de caractères. Imaginez la première fonction dans juste au sujet de chaque programme C/C++:
int main(int argc, char *argv[])
{
...
}
Qui peut aussi être écrit
int main(int argc, char **argv)
{
...
}
La variable argv est un pointeur vers un tableau de pointeurs sur char. C'est un moyen standard de passage autour des tableaux de C "chaînes". Pourquoi le faire? Je l'ai vu utilisé pour le support multi-langue, des blocs de chaînes d'erreur, etc.
N'oubliez pas qu'un pointeur est un nombre - l'index de la mémoire "logement" à l'intérieur d'un ordinateur. C'est tout, rien de plus. Donc un double pointeur est l'indice d'un élément de la mémoire qui se trouve tout juste à tenir un autre indice à un autre endroit. Mathématique rejoindre les points si vous le souhaitez.
C'est la façon dont je l'ai expliqué pointeurs à mes enfants:
Imaginez la mémoire de l'ordinateur est une série de boîtes. Chaque boîte a un numéro écrit sur elle, en commençant à zéro, en remontant par 1, cependant le nombre d'octets de la mémoire, il est. Disons que vous avez un pointeur vers un lieu de mémoire. Ce pointeur est juste le numéro de la boîte. Mon pointeur est, disons 4. Je regarde dans la case no 4. L'intérieur est un autre numéro, cette fois c'est 6. Alors maintenant, nous regardons dans l'encadré 6, et obtenez la dernière chose que nous voulions. Mon premier pointeur (qui a dit "4") était un double pointeur, parce que le contenu de sa boîte était l'indice d'une autre boîte, plutôt que d'être un résultat final.
Il semble que ces derniers temps, les pointeurs eux-mêmes sont devenus des parias de la programmation. De retour dans le pas trop lointain passé, il était tout à fait normal de passer des pointeurs de pointeurs. Mais avec la prolifération de Java, et de l'utilisation croissante par référence en C++, la compréhension fondamentale des pointeurs en déclin, en particulier autour de lors de Java s'est établie comme une première année en informatique, les débutants de la langue, sur Pascal et C.
Je pense que beaucoup de venin sur les pointeurs est parce que les gens ne sont pas toujours les comprendre correctement. Choses que les gens ne comprennent pas obtenir un objet de dérision. Alors ils sont devenus "trop dur" et "trop dangereux". Je suppose que même avec de soi-disant savants préconisent des Pointeurs Intelligents, etc. ces idées sont à prévoir. Mais en réalité, il y a un très puissant outil de programmation. Honnêtement, les pointeurs sont la magie de la programmation, et après-tout, ils sont juste un nombre.