Maison > développement back-end > Problème PHP > La différence entre les références php et les pointeurs

La différence entre les références php et les pointeurs

王林
Libérer: 2023-02-24 07:14:02
original
2984 Les gens l'ont consulté

La différence entre les références php et les pointeurs

Essence :

La référence est un alias, le pointeur est une adresse

Spécifique :

1. De manière phénoménale, un pointeur peut changer la valeur sur laquelle il pointe au moment de l'exécution, mais une référence ne changera pas une fois qu'elle est liée à un objet. Cette phrase peut être comprise comme suit : un pointeur peut être réaffecté pour pointer vers un objet différent. Cependant, la référence pointe toujours vers l'objet spécifié lors de l'initialisation et ne peut pas être modifiée ultérieurement, mais le contenu de l'objet spécifié peut être modifié.

2. Du point de vue de l'allocation mémoire, le programme alloue une zone mémoire pour les variables de pointeur mais pas pour les références, car la référence doit être initialisée lorsqu'elle est déclarée pointer vers un objet déjà existant. Les références ne peuvent pas pointer vers des valeurs nulles.

3. Du point de vue de la compilation, le programme ajoute respectivement des pointeurs et des références à la table des symboles lors de la compilation. La valeur d'adresse correspondante de la variable de pointeur dans la table de symboles est la valeur d'adresse de la variable de pointeur, et la valeur d'adresse correspondante de la référence dans la table de symboles est la valeur d'adresse de l'objet référencé.

La table des symboles ne sera pas modifiée après sa génération, donc le pointeur peut changer l'objet vers lequel il pointe (la valeur dans la variable du pointeur peut être modifiée), mais l'objet de référence ne peut pas être modifié. C'est la principale raison pour laquelle l'utilisation de pointeurs n'est pas sûre et l'utilisation de références est sûre. Dans un sens, une référence peut être considérée comme un pointeur qui ne peut pas être modifié.

4. Le fait qu'il n'y ait pas de référence à une valeur nulle signifie que le code utilisant des références est plus efficace que l'utilisation de pointeurs. Car il n’est pas nécessaire de tester la validité d’une référence avant de l’utiliser. En revanche, les pointeurs doivent toujours être testés pour éviter qu'ils ne soient nuls.

5. Théoriquement, il n'y a pas de limite au niveau des pointeurs, mais la référence ne peut être qu'un seul niveau. Comme suit :

 int** p1;         // 合法。指向指针的指针
 
  int*& p2;         // 合法。指向指针的引用
 
  int&* p3;         // 非法。指向引用的指针是非法的
 
  int&& p4;         // 非法。指向引用的引用是非法的
Copier après la connexion

Attention ! La lecture ci-dessus est de gauche à droite.

Tutoriel recommandé : Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal