Est-ce que les pointeurs servent juste pour les déclarations et les réservations de mémoire ou bien on peut les utilises dans d’autre domaine
Et merci pour vos réponses![]()
Est-ce que les pointeurs servent juste pour les déclarations et les réservations de mémoire ou bien on peut les utilises dans d’autre domaine
Et merci pour vos réponses![]()
* De manière générale, il est aussi commode de les utiliser pour pouvoir accéder à un même objet depuis plusieurs endroits.
* Ils permettent aussi de ne passer qu'une adresse mémoire, au lieu d'un copie de l'objet lui même, ce qui est indispensable lorsque tu manipules de gros objets.
C'est en effet leur fonction essentielle mais on peut en effet leur trouver d'autres applications.
Par exemple, le parcours des éléments d'un tableau. Un tableau en C / C++ est en fait un pointeur sur l'adresse du premier élément, avec un pas correspondant à la taille des éléments du tableau.
C'est par exemple de cette façon que sont traitées les chaînes de caractères en C.
Quand on passe des paramètres à une fonction, ces paramètres sont copiés. Si on veut pouvoir modifier le paramètre, on veut pas travailler sur une copie, dans ce cas, on utilise les pointeurs pour passer les addresses des paramètres. C'est aussi utile si un paramètre est un objet de grande taille dont la copie prendrait du temps. En C++, on préfère souvent les références.
On peut mettre un pointeur à NULL (à zéro) pour indiquer un vide.
Il doit en exister d'autres mais ce sont les principales.
Inexact. Un tableau, en C ou en C++, est implicitement convertible en un pointeur sur son premier élément.Envoyé par BugFactory
En clair, si je déclare :
tab est de type "tableau de 42 doubles", il est donc de type double[42].
Code : Sélectionner tout - Visualiser dans une fenêtre à part double tab[42];
Mais le type double[42] est implicitement convertible en double *, c'est pourquoi le code suivant est valide:
Code : Sélectionner tout - Visualiser dans une fenêtre à part double *ptr = tab;
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ce qui se fait de meilleure façon avec des références.* De manière générale, il est aussi commode de les utiliser pour pouvoir accéder à un même objet depuis plusieurs endroits.
* Ils permettent aussi de ne passer qu'une adresse mémoire, au lieu d'un copie de l'objet lui même, ce qui est indispensable lorsque tu manipules de gros objets.
Le C comme le C++ ne vérifiant pas que l'on sort du tableau avec un indice incorrect, je pense que l'on peut effectivement les considérer comme des pointeurs, la différence n'étant qu'au niveau de l'écriture. J'admets que les notions sont différentes, mais le C / C++ lui-même ne s'en préoccupe pas.Envoyé par Médinoc
Il s'en préoccupe dès que tu prends l'adresse d'un tableau (&tab), qui n'est certainement pas de type pointeur de pointeur et qui conserve l'information sur la taille.
En C++, pointeurs ou références sur un tableau permettent ce genre de choses:
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 template< size_t N > void UneFonction(char (&buf)[N]) { char unTableauDeLaMemeTailleQueBuf[N]; // ... }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager