witam, mam duzy problem i z gory dziekuje za pomoc

mam wykonac projekt, ktorego elementem jest stworzenie struktury zawierajacej dynamiczna alokacje dwuwymiarowej tablicy oraz jej wymiarow. tablica dwuwymiarowa ma byc reprezentowana przed odpowiedni wskaznik. Nastepnie mam stworzyc funkcje inicjujaca wskaznik do tej struktury, wymiary pobrane ze standartowego wejscia.

moja pytanie jest takie - jak w strukturze zamiescic dynamiczna alokacje, bo z tego co wiem (jestem poczatkujacy) struktura pozwala tylko na deklaracje. wiec czy ta alokacdja ma byc w tej funkcji tworzacej wskaznik? jak Wy rozumiecie to polecenie? czy dobrze rozumiem dynamiczna alokacje i czy ponizszy kod jest poprawny?

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



struct comb 
{
    int x,y;
    int **tabliczka; 
};

struct comb* getptr(struct comb);

int main(int argc, char *argv[])
{
    struct comb strk;
  getptr(strk);
     system("PAUSE");	
     return 0;
}

struct comb* getptr(struct comb str)
{
       printf("Podaj wymiary tablicy oddzielone spacja (np. 3 6):");
       scanf("%d", &str.x);
       scanf("%d", &str.y);
       int i,j;
       str.tabliczka = malloc(str.x * sizeof *(str.tabliczka));         
       for (i = 0; i<str.y; i++) 
         {
         str.tabliczka[i] = malloc(str.y * sizeof **(str.tabliczka));
         }
 for(j=0;j<str.x;j++)
 {
   for(i=0;i<str.y;i++)
   {
   printf("%d  ", str.tabliczka[j][i]);    
   }     
   printf("\n");
 }
 struct comb *ptr;
 ptr=&str;
 return ptr;
}

funkcja wzraca wskaznik. czy to jest dynamiczna alokacja i czy dobrze jest wykonana? czy moge jej dokonac dopiero po wywolaniu funkcji? istnieje jakis sposob na dynamiczne zaalokowanie tablicy juz w strukturze? czy moze chodzi o to, ze stworzylem nowy typ, to pozniej mam zadeklarowac element tego typu, gdzie argumentem bedzie wlasnie tablica dynamicznie alokacja?

dziekuje z gory za kazda rade