Wskaźnik na referencję?
Ostatnio zmodyfikowano 2017-03-07 15:13
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 |
|
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 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; }
|
|
Rufus87 Temat założony przez niniejszego użytkownika |
» 2017-03-07 15:13:24 Dzięki za pomoc |
|
« 1 » |