alokacja tablicy dwuwymiarowej w funkcji

0

Witam
Chciałbym żeby program alokowal tablice z uzyciem funkcji. Gdzie do funkcji zostaje przekazana tablica dwuwymiarowa. Ale program ktory napisalem sie wiesza, wiec jest jakis blad w tek funkcji. Wydaj mi sie ze źle zadelkarowalem argumenty funkcji.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int alokuj(int **tab, int x);
int x,i,j,z;
int **macierz_1, **macierz_2, **iloczyn;

int main()
{
srand(time(0));
printf("Podaj wielkosc macierzy\n");
scanf("%d", &x);

alokuj(macierz_1, x);
alokuj(macierz_2, x);
alokuj(iloczyn, x);
}

int alokuj(int **tab, int x)
{
  tab = (int**)malloc(sizeof(int*)*x);
  for (i=0; i<x; i++)
  {
  tab[i]= (int*)malloc(sizeof(int)*x);
  }
}
0

Jakoś ten kod mi znajomo wygląda :D Ale mniejsza o to. Żebyś mógl zaalokować pamięć dla tablicy w funkcji, musisz tam przekazać jej adres pamięci, czyli wywołanie funkcji powinno wyglądać tak:

alokuj(&macierz_1, x);

Natomiast deklaracja funkcji alokuj, powinna wyglądać tak:

int alokuj(int ***tab, int x)
0

a dlaczego tak

int alokuj(int ***tab, int x)

skoro jest to tablica dwuwymiarowa ?

0

wskaźnik na tablicę dwuwymiarową

0

okej, to teraz mam inny problem bo dynamiczne tablice zostały zadeklarowane wewnątrz funkcji alokuj, a jak zrobić żeby były one dostępne w funkcji main() ?

0
#include <stdlib.h>
#include <stdio.h>

double **alokuj(unsigned x)
  {
   double **tab;
   unsigned i;

   tab=(double**)malloc(x*sizeof(double*));
   for(i=0;i<x;++i) tab[i]=(double*)malloc(x*sizeof(double));
   return tab;
  }

int main()
  {
   double **macierz_1,**macierz_2,**iloczyn;
   unsigned x;

   //srand(time(0));
   printf("Podaj wielkosc macierzy: ");
   scanf("%u",&x); 
   macierz_1=alokuj(x);
   macierz_2=alokuj(x);
   iloczyn=alokuj(x);
   
   fflush(stdin);
   getchar();
   return 0;
  }
0

Bardzo dziękuje, a mógłbym prosić a małe wyjasnienie?

0

Wyjaśnienie czego?

0
double **alokuj(unsigned x)
macierz_1=alokuj(x);
   macierz_2=alokuj(x);
   iloczyn=alokuj(x);
   

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