Comment fonctionnent les pointeurs vers les pointeurs en C ? Quand les utiliseriez-vous ?
Bien expliqué pour la partie "Pourquoi".
Comment fonctionnent les pointeurs vers les pointeurs en C ? Quand les utiliseriez-vous ?
Lorsqu'une référence à un pointeur est nécessaire. Par exemple, lorsque vous souhaitez modifier la valeur (adresse pointée) d'une variable pointeur déclarée dans la portée d'une fonction appelante à l'intérieur d'une fonction appelée.
Si vous passez un simple pointeur en argument, vous modifiez les copies locales du pointeur, et non le pointeur original dans la portée de l'appel. Avec un pointeur vers un pointeur, vous modifiez ce dernier.
Un pointeur vers un pointeur est également appelé un poignée . On l'utilise souvent lorsqu'un objet peut être déplacé dans la mémoire ou supprimé. On est souvent responsable du verrouillage et du déverrouillage de l'utilisation de l'objet de mémoire. objet afin qu'il ne soit pas déplacé lors de son accès.
Il est souvent utilisé dans les environnements à mémoire limitée, comme le Palm OS.
C'est un pointeur vers la valeur de l'adresse du pointeur. (c'est terrible je sais)
En fait, il vous permet de passer un pointeur à la valeur de l'adresse d'un autre pointeur, de sorte que vous pouvez modifier l'endroit où pointe un autre pointeur à partir d'une sous-fonction, par exemple :
void changeptr(int** pp)
{
*pp=&someval;
}
Désolé, je sais que c'était plutôt mauvais. Essayez de lire, euh, ceci : codeproject.com/KB/cpp/PtrToPtr.aspx
Un pointeur vers un pointeur est, eh bien, un pointeur vers un pointeur.
Un exemple significatif de someType** est un tableau bidimensionnel : vous avez un tableau, rempli de pointeurs vers d'autres tableaux, donc lorsque vous écrivez
dpointer [5] [6]
vous accédez au tableau qui contient des pointeurs vers d'autres tableaux à sa 5e position, récupérez le pointeur (que fpointer son nom) et accédez ensuite au 6e élément du tableau référencé à ce tableau (donc, fpointer[6]).
Il ne faut pas confondre les pointeurs avec les tableaux de rang 2, par exemple int x[10][10] où vous écrivez x[5][6] vous accédez à la valeur du tableau.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
45 votes
Non, ce n'est pas du travail à domicile...., je voulais juste savoir... parce que je vois cela souvent quand je lis du code C.
1 votes
Un pointeur sur un pointeur n'est pas un cas particulier de quelque chose, donc je ne comprends pas ce que vous ne comprenez pas à propos de void**.
1 votes
Pour les tableaux 2D, le meilleur exemple est la ligne de commande args "prog arg1 arg2" est stockée char**argv. Et si l'appelant ne veut pas allouer la mémoire ( la fonction appelée allouera la mémoire )
1 votes
Vous avez un bel exemple d'utilisation de "pointeur à pointeur" dans Git 2.0 : voir ma réponse ci-dessous