En programmation PHP, les pointeurs sont un outil puissant qui peut être utilisé pour référencer l'adresse mémoire d'une variable puis modifier la valeur de la variable. Cependant, l'appel de méthodes avec des pointeurs peut présenter certains pièges et problèmes, qui doivent être traités avec prudence. Dans cet article, l'éditeur PHP Banana présentera en détail les pièges des méthodes d'appel de pointeurs pour aider les développeurs à éviter les erreurs courantes et les problèmes inutiles. Que vous soyez débutant ou développeur expérimenté, cet article vous fournira des orientations et des conseils pratiques. Explorons les pièges des méthodes d'appel de pointeurs et améliorons nos compétences en programmation !
J'écris une implémentation sur 2-3-4 arbres. La structure des nœuds est la suivante
type Node struct { items []int childs []*Node parent *Node }
Je suis confus par le code ci-dessous. Il me semble que ces deux parties font la même chose. Cependant, L'un d'eux a tort.
cur = cur.parent cur._insertNode(upTo, rn) upTo, rn = cur._splitNode()
cur.parent._insertNode(upTo, rn) upTo, rn = cur.parent._splitNode() cur = cur.parent
Quelqu’un peut-il me dire quelle est la différence ?
Ce que j'attendais, c'était une explication sur cette question. Est-ce un écueil des méthodes de pointage Go ? Ou une erreur du compilateur ?
Supposons que C soit le nœud vers lequel cur
a initialement pointé, cur
原来指向的节点,A为C原来的父节点,假设对 _insertNode
A est le nœud parent d'origine de C, en supposant que l'appel à _insertNode</code > sera en Insérer un nouveau nœud </em>B<em> entre </em>A</p> et <p>C</p> donc, on commence ici : <p> ;
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">A
|
C</pre><div class="contentsignin">Copier après la connexion</div></div>
</p> (plus d'autres nœuds, sans rapport avec mon point de vue) : <p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">A
|
B
|
C</pre><div class="contentsignin">Copier après la connexion</div></div>
<code>_insertNode
之前,C的父级是A;调用 _insertNode
(plus d'autres nœuds, toujours sans rapport avec mon propos).
Il est à noter qu'avant d'appeler _insertNode
, le parent de C est
; après avoir appelé _insertNode
, le parent de
est
B.
🎜Dans cet esprit, voici votre "code correct", accompagné de commentaires expliquant ce qu'il fait : 🎜// initially, cur = C // set cur = A: cur = cur.parent // insert B between A and C: cur._insertNode(upTo, rn) // cur is still A // split A: upTo, rn = cur._splitNode()
// initially, cur = C // insert B between A and C: cur.parent._insertNode(upTo, rn) // cur.parent is now B // split B: upTo, rn = cur.parent._splitNode() // set cur = B: cur = cur.parent
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!