Referncja wskaźnikowa – kilka pytań

0

Hej

Mam w książce przykład takiej funkcji:

void *Sort(A* & array, int k)
{
//jakiś kod sortujący, A jest typem danych użytkownika

}

Moje pytania:

  1. Ten napis *Sort oznacza zwracanie wskaźnika przez funkcję?
  2. Co oznacza taki zapis A* & array.

Referencja na wskaźnik typu A? Sam wskaźnik nie wystarczy do zmiany zawartości tego A?

0
  1. Tak, chociaż ja bym napisał void* Sort zamiast void *Sort.

  2. Przekazujesz do funkcji wskaźnik przez referencję - wskaźnik nie jest kopiowany, tylko odwołujesz się do przekazanego wskaźnika, a nie do lokalnej kopii jak przy przekazaniu przez wartość. Pozwala to modyfikować wskaźnik i oszczędza 4 bajty pamięci (32 bity hehe).

Wygląda na to, że do funkcji przekazujesz wskaźnik na początek tablicy i rozmiar tablicy. Później pewnie są jakieś dziwne alokacje i dealokacje pamięci i funkcja zwraca wskaźnik na początek posortowanej tablicy. Ja bym tu użył szablonu funkcji. Poza tym lepiej używać gotowej funkcji z biblioteki standardowej - std::sort.

PS. Pokaż może kod całej funkcji.

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