sens de “référencement” et “déréférencement”
J'ai lu différentes choses sur internet et n'ai pas compris, parce que chaque site web dit des choses différentes.
Parler de C.
J'ai lu sur *
référencement opérateur et &
opérateur de déréférencement; ou que le référencement s'agit de pointer à une variable et de déférence accède à la valeur de la variable sur laquelle pointe le pointeur. Donc, je suis confus.
Puis-je obtenir une explication simple mais complète au sujet de "référencement et de référencement"?
- c-faq.com/~scs/cgi-bin/faqcat.cgi?sec=ptrs
- Notez que les noms officiels sont adresse (
&
) et d'indirection (*
) de l'opérateur. - Vous avez les opérateurs confondus. * le derefencing de l'opérateur.
- Double Possible de Que signifie "déréférencement" un pointeur veux dire?
Vous devez vous connecter pour publier un commentaire.
Référencement les moyens de prendre l'adresse d'une variable existante (à l'aide de &) pour définir un pointeur de variable.
Pour être valide, un pointeur doit être réglé à l'adresse d'une variable du même type que le pointeur, sans l'astérisque:
Référence un pointeur désigne l'utilisation de l'opérateur * (astérisque) pour récupérer la valeur de l'adresse mémoire pointée par le pointeur:
REMARQUE: La valeur stockée à l'adresse du pointeur de la souris doit être une valeur DU MÊME TYPE que le type de la variable pointeur "points", mais il n'y est pas de garantie c'est le cas, sauf si le pointeur a été correctement définie. Le type de la variable sur laquelle pointe le pointeur est le type moins ultrapériphériques astérisque.
Invalide déréférencement peut ou peut ne pas causer des plantages:
Invalide référencement est plus susceptible de causer des erreurs de compilation que les accidents, mais ce n'est pas une bonne idée de compter sur le compilateur pour cela.
Références:
http://www.codingunit.com/cplusplus-tutorial-pointers-reference-and-dereference-operators
http://www.cplusplus.com/doc/tutorial/pointers/
http://en.wikipedia.org/wiki/Dereference_operator
J'ai toujours entendu utilisé dans le sens opposé:
&
est l'opérateur de référence -- il vous donne une référence (pointeur) à un objet*
est l'opérateur de déréférencement-il faut une référence (pointeur) et permet la visée de l'objet;Pour commencer, vous avez en arrière:
&
de référence et*
est de déréférencement.De la référence d'une variable signifie accéder à l'adresse mémoire de la variable:
Référence à une variable signifie accéder à la variable stockée à une adresse de mémoire:
trouver ci-dessous l'explication:
conclusion :
&
[adresse de l'opérateur] est utilisé pour le référencement.*
[star opérateur] est utilisé pour de référencement .Référencement
&
est l'opérateur de référence. Il s'agira de l'adresse mémoire de la variable du pointeur.Exemple:
Déréférencement
Opérateur de déréférencement
*
est utilisé par le pointeur de variable, d'accéder directement à la valeur de la variable au lieu de son adresse de mémoire.Exemple:
Le contexte qui * est dans la, confond le sens parfois.
Alors, dans le contexte de déclarant un type comme int ou char, on pourrait utiliser les dereferencer ' * ' pour signifier la référence (l'adresse), ce qui rend confus si vous voyez un message d'erreur du compilateur en disant: 'attend char*", qui est de demander une adresse.
Dans ce cas, lorsque l' * est après un type (int, char, etc.) le compilateur attend une variable de l'adresse. Nous lui donnons cela en utilisant un opérateur de référence, alos appelé le adresse de opérateur '& ' devant une variable. Plus loin encore, dans le cas que je viens de faire ci-dessus, le compilateur s'attend à l'adresse de tenir une valeur de caractère, pas un numéro. (de type char * == adresse d'une valeur qui a un caractère)
Pensez à chaque variable comme ayant une position (ou une valeur d'index si vous êtes familiarisé avec les tableaux) et d'une valeur. Il pourrait prendre un peu de s'habituer à penser à chaque variable ayant deux valeurs, une valeur, c'est la position, physiquement stocké avec de l'électricité dans votre ordinateur, et une valeur représentant quelle que soit la quantité ou de la lettre(s) le programmeur veut store.
À l'intérieur de chaque bloc, il copie les variables (le cas échéant) qui sont passés dans (via les paramètres à l'intérieur "("s). À l'intérieur de ces blocs, les changements d'une variable à un copie de cette variable, la variable utilise les mêmes lettres mais à une autre adresse (à partir de l'original). En utilisant l'adresse "de référence" de l'original, nous pouvons changer une variable à l'aide d'un bloc à l'extérieur de la principale, ou à l'intérieur d'un enfant de main.