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 :)
Version imprimable
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.
Merci pour les informations
Inexact. Un tableau, en C ou en C++, est implicitement convertible en un pointeur sur son premier élément.Citation:
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:double tab[42];
Mais le type double[42] est implicitement convertible en double *, c'est pourquoi le code suivant est valide:
Code:double *ptr = tab;
Ce qui se fait de meilleure façon avec des références.Citation:
* 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.Citation:
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:
1
2
3
4
5
6
7 template< size_t N > void UneFonction(char (&buf)[N]) { char unTableauDeLaMemeTailleQueBuf[N]; // ... }
Je l'ignorais, merci pour cette précision.