Przekazywanie wskaznika do funkcji

0

Witam,
Bardzo proszę o pomoc w zrozumieniu problemu.
Dlaczego adres przechowywany przez wskaznik root, przed i po wyjsciu z funkcji ma wartosc 0, a nie taki sam w funkcji insert i po wyjściu z niej.

 
#include<iostream>
using namespace std;
struct node
{
 int value;
 node * left;
 node * right;       
};
node* global = new node();

void insert(node* tree,int arg)
{
 if(tree==NULL)
 {
    tree = global;
 	tree->left=NULL;
 	tree->right=NULL;
 	tree->value=arg;
    cout << tree << endl;
 }
}
int main()
{
 node* root=NULL;
 cout << root << endl;
 insert(root,1);
 cout << root << endl;
 system("pause");
 return 0;   
}

1

Masz 4 wersje do wyboru do koloru:

struct tree { node *root; };
void insert(tree &t,int arg)
  {
   if(!t.root)
     {
      t.root=new node();
      t.root->left=NULL;
      t.root->right=NULL;
      t.root->value=arg;
     }
  }

//tree t={NULL};
//insert(t,1);
void insert(node *&tree,int arg)
  {
   if(!tree)
     {
      tree=new node();
      tree->left=NULL;
      tree->right=NULL;
      tree->value=arg;
     }
  }
//insert(root,1);
node *insert(node *tree,int arg)
  {
   if(!tree)
     {
      tree=new node();
      tree->left=NULL;
      tree->right=NULL;
      tree->value=arg;
      return tree;
     }
  }
//root=insert(root,1);
void insert(node **tree,int arg)
  {
   if(!*tree)
     {
      *tree=new node();
      *tree->left=NULL;
      *tree->right=NULL;
      *tree->value=arg;
     }
  }
//insert(&root,1);
0

Dziekuje za przykladowe kody.
Czy dobrze rozumiem że jeśli podaje do funkcji wskaźnik to nie odnoszę się bezpośrednio do niego tylko jest tworzona jego kopia, która zostaje później usunięta?

pozdrawiam

0
XxmanxX napisał(a)

Dziekuje za przykladowe kody.
Czy dobrze rozumiem że jeśli podaje do funkcji wskaźnik to nie odnoszę się bezpośrednio do niego tylko jest tworzona jego kopia, która zostaje później usunięta?

pozdrawiam

Tak

1 użytkowników online, w tym zalogowanych: 0, gości: 1