Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźnik na referencję?

Ostatnio zmodyfikowano 2017-03-07 15:13
Autor Wiadomość
Rufus87
Temat założony przez niniejszego użytkownika
Wskaźnik na referencję?
» 2017-03-07 10:49:28
Witam
Szukałem informacji nt. tworzenia drzewa binarnego.Znalazłem kod,jednak jeden jego fragment jest dla mnie nie do końca zrozumiały.Przedstawiam ten fragment kodu:

void  DodajWezel (Twezel *&wezel, int wartosc) {   
   if (wezel == NULL)  { // tworzymy i dołączamy element         
       wezel = new Twezel;        
       wezel -> Dane = wartosc;   
       wezel -> Lewy = NULL;   
       wezel -> Prawy = NULL;  
   }   
   else         
     if (wartosc < wezel -> Dane) DodajWezel (wezel -> lewy, wartosc );    // rekurencyjne wywolanie             
   else 
     if (wartosc > wezel -> Dane) DodajWezel (wezel -> prawy, wartosc ); // rekurencyjne wywolanie           
   // uwaga: liczby powtarzające się nie są dodawane do drzewa 



Jako argument w wywołaniu funkcji jest tu przekazywana konstrukcja *&wezel .Pierwszy raz się z tym spotykam-przekazanie samego wskaźnika powoduje,że funkcja nie działa poprawnie,jednak mimo to nie do końca rozumiem po co tu ta referencja?W razie czego podaję link do strony z pełnym kodem:http://iair.mchtr.pw.edu.pl/~bputz/aisd_cpp/lekcja5/segment1/main.htm
P-158650
michal11
» 2017-03-07 12:42:44
Jest to referencja na wskaźnik, jest to zrobione po to aby można było modyfikować oryginalny wskaźnik przesłany do tej funkcji a nie jego kopię.

Przykład
C/C++
void fun( int *& refptr )
{
    static int staticVal = 100;
    refptr = & staticVal;
}

int main()
{
    int val = 1;
    int * valPtr = & val;
   
    std::cout << valPtr << " | " << * valPtr << "\n";
    fun( valPtr );
    std::cout << valPtr << " | " << * valPtr << "\n";
    return 0;
}
P-158651
Rufus87
Temat założony przez niniejszego użytkownika
» 2017-03-07 15:13:24
Dzięki za pomoc
P-158659
« 1 »
  Strona 1 z 1