-1
votes

Ajout de nœud à la liste liée sans affecter explicitement l'espace mémoire (sans utiliser de nouveau)

Alors j'apprendais comment faire une liste liée et je me demandais pourquoi nous devions utiliser "Nouveau" lors de l'ajout d'un nœud. Vous trouverez ci-dessous une fonction qui ajoute un nœud correctement: xxx

mais, puisque je suis nouveau à C ++, lorsque j'ai essayé de comprendre comment faire cela par moi-même, au lieu d'avoir la ligne: xxx

j'ai écrit: xxx

Cela ne fonctionne pas. Il semble que la nouvelle variable_node continue d'être affectée à la même adresse de mémoire chaque fois que vous essayez d'ajouter un nouveau nœud. Ceci est simultanément fascinant et induisant. Quelqu'un pourrait-il expliquer cette étrangeté C ++?

merci!


1 commentaires

3 Réponses :


3
votes

Lorsque vous écrivez

Node new_node;


0 commentaires

0
votes

Lorsque vous déclarez une variable sans utiliser nouveau , vous enregistrez une partie de la mémoire allouée dans la pile . Les variables stockées dans la pile appartiennent à une fonction mais pas à l'extérieur (par exemple, un compteur, des itérateurs, etc.).

Lorsque vous déclarez en utilisant nouveau , vous enregistrez une partie de la mémoire allouée dans le tas tas . Les variables stockées dans le tas sont accessibles dans tout votre programme (et, par certaines méthodes, par d'autres programmes).

Vous pouvez trouver des informations plus détaillées dans le lien suivant: https://www.griBblelab.org/cbootcamp/7_memory_stack_vs_heap.html


0 commentaires

0
votes
Node new_node;
Node* new_node_ptr = &new_node;

1 commentaires

Cette réponse évite délibérément des références externes et des termes tels que la pile, le tas, l'adresse ou la portée. Il n'invoque que l'outil utile le plus important et le plus important dans la boîte à outils de tout programmeur - le bon sens.