Tablica wielowymiarowa jako parametr funkcji

0

Witam. Chodzi o czysty C. Program ma z pliku wczytywać liczby do macierzy. Oczywiscie zrobilem malloca wczesniej. Napisałem taką funkcję(zamieszczam tylko jej fragment, bo nie ma znaczenia to co jest dalej):

 
wpisz_do_tablicy(int **nazwa_tablicy, const char *nazwa_pliku) {

	macierz_a = fopen(nazwa_pliku, "r"); 

	while (feof(macierz_a) == 0)
	{
		x = fgetc(macierz_a);

		if ((x >= '0') && (x <= '9'))
		{
			//printf("mam cyfre!!! %c\n", x);
			int liczba = atoi(&x);
			my_number = my_number * 10 + liczba;
			nazwa_tablicy[i][j] = my_number;

	}
	fclose(macierz_a);


}

Funkcję wywołuje w main w taki sposób:

 

int main()
{
	

	
	char* macierz_a = "macierz_a.txt";
	int **tab1;
	wpisz_do_tablicy(tab1, macierz_a);
}

Problem mam z pierwszym parametrem. Ma on być nazwą tablicy do której będą wpisywane cyfry. Czyli w mojej funkcji tam gdzie jest "nazwa_tablicy" program ma to zamienić na "tab1". Nie chce mi to zadziałać. Co robię źle ? Próbowałem przed "tab1" dopisywać *, ** albo &. Nie przyniosło to rezultatu.
Visual wywala dokładnie taki błąd:

Exception thrown: read access violation.

nazwa_tablicy was 0xCDDDCDDE.

If there is a handler for this exception, the program may be safely continued.
 

Zamieszczę ewentualnie malloca:

 
alokuj_pamiec(int **nazwa_tablicy, int kolumny, int wiersze){
	nazwa_tablicy = (int**)malloc(wiersze * kolumny * sizeof(int));

	for (int i = 0; i<(kolumny); i++)
	{
		nazwa_tablicy[i] = (int*)malloc(kolumny * sizeof(int));
	}

	for (int j = 0; j<(wiersze); j++)
	{
		nazwa_tablicy[j] = (int*)malloc(wiersze * sizeof(int));
		printf("%d", j);
	}

i w taki sposób go wywołuje:

 
int main()
{
	
	int tab1_k = 0;
	int tab1_w = 0;
	otworz_i_zlicz(macierz_a, &tab1_k, &tab1_w);
	alokuj_pamiec(&tab1, tab1_k, tab1_w);
}

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