Problem ze wskaźnikami/referencjami

0

Witam.
Programuje już pewien czas w C++ (poziom wyżej niż podstawowy) i nie mogę znaleźć dobrego wytłumaczenia odnośnie wskaźników..
Podstawowe operacja na wskaźnikach rozumiem dobrze, ale problem się zaczyna kiedy widzę tego typu konstrukcje:

  • typ_zwracany nazwa_funkcji (char**& );
  • typ_zwracany nazwa_funkcji (char*& );
  • typ_zwracany nazwa_funkcji (char** & );
  • typ_zwracany nazwa_funkcji (char** );

zamiast char'a oczywiście mogą być inne struktury danych, ale to tylko przykład.
Może mi ktoś wyjaśnić, najlepiej na przykładzie? Albo za jakiś pomocny link byłbym wdzięczny.

2

Czytanie deklaracji to poziom niżej niż podstawowy...
char**& -> referencja do wskaźnika na wskaźnik do char
char*& -> referencja do wskaźnika do char
char** -> wskaźnik do wskaźnika do char

Załóżmy że chcesz wewnątrz funkcji zaalokować pamięć i zwrócic jako argument (bo np. przez wartość zwracasz już coś innego):

void funkcja(char*& wskaznik)
{
  wskaznik = new char[100];
}

//
int main()
{
  char* wskaznik;
  funkcja(wskaznik);
}

Gdyby & tam nie było to niestety alokowałbyś pamięć do lokalnej KOPII wskaźnika a nie do oryginału.
Analogicznie ma się sytuacja z **& ale mógłbyś alokować tablicę "dwuwymiarową"

Można równie dobrze zrobić to tak:

void funkcja(char** wskaznik)
{
  *wskaznik = new char[100];
}

//
int main()
{
  char* wskaznik;
  funkcja(&wskaznik);
}

Ale jest to trochę mniej czytelne.

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