problem ze wskaznikami

0

Mam sobie taka funkcje z wykorzystaniem tablicy dynamicznej:

void init(int **tab, int x)
{
  * tab=new int[x];
}

w mainie mam deklaracje:

int*stos;

i wywolanie funkcji:

init(&stos,b);

Dlaczego jak mialem o jeden wskaznik mniej czyli:

void init(int *tab, int x)
{
tab=new int[x];
}

int*stos; - deklaracja w mainie
init(stos,b); - wywolanie w mainie

to nie dzialalo jak nalezy(funkcja nic nie robila)?

0

Google: przekazywanie przez referencję vs przekazywanie przez wartość.

0

(funkcja nic nie robila)?
robiła — wyciek pamięci.

0
void init(int *tab, int x);

Przy takim zapisie przekazywałeś do funkcji kopie wskaźnika, przez co powodowałeś później wyciek pamięci.

void init(int **tab, int x);

Tutaj przekazujesz wskaźnik na wskaźnik, więc nie powstaje przez to żadna kopia wskaźniki, tylko działasz na orginale.

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