Tablica dynamiczna tworzona przez funkcję

0

Witam,
chcialbym napisac funkcja ktora pobiera podwojny wskaznik na int, i tworzy z niego tablice dynamiczna taka do ktorej mozna sie dostac poza cialem tej funkcji.

Kod:

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

void creator(int **tab){
     int k,wym;
     wym=5;
     tab=(int **)(malloc(wym*sizeof(int *)));
     for(k=0; k<wym; ++k){
  	          tab[k]=(int *)(malloc(sizeof(int)*wym));
     }
}

int main(){
int **tabol;
creator(tabol);
printf("Mam tabol[0][0]=%d, a tabol[4][4]=%d\n",tabol[0][0],tabol[4][4]);
system("pause");
return 0;}

Probowalem zrobić int **tabol zmienna globalna ale to tez nic nie pomaga. Z góry dzieki!

0

Adres wskaźnika na wskaźnik jest Ci potrzebny, jeśli funkcja ma przypisać adres, wskaźnikowi na wskaźnik. Funkcja oczywiście też do zmiany w tym kierunku.

0

A zredagowałbyś może ten kod co powyżej? Bo ja staram się doczepić ten adres w wielu miejscach i kompilator zaskakuje mnie to coraz nowszymi błędami :)

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

void creator(int ***tab){
     int k,wym;
     wym=5;
     *tab=(int **)(malloc(wym*sizeof(int *)));
     for(k=0; k<wym; ++k){
                    (*tab)[k]=(int *)(malloc(sizeof(int)*wym));
     }
}

  int main(){
  int **tabol;
  creator(&tabol);
  printf("Mam tabol[0][0]=%d, a tabol[4][4]=%d\n",tabol[0][0],tabol[4][4]);
  system("pause");
  return 0;
}
0

Ok, dalem rade. Dzieki!

void creator(int ***tab){
     int k,wym;
     wym=5;
     *tab=(int **)(malloc(wym*sizeof(int *)));
     for(k=0; k<wym; ++k){
  	          (*tab)[k]=(int *)(malloc(sizeof(int)*wym));
     }
}

int main(){
int **tabol;
creator(&tabol);
tabol[0][0]=0;
tabol[4][4]=4;
printf("Mam tabol[0][0]=%d, a tabol[4][4]=%d\n",tabol[0][0],tabol[4][4]);
system("pause");
return 0;} 
0

To nie będzie działać,

musisz wrzucić jako argument referencje do wskaznika &**.

Pozdrawiam serdecznie

0

Jeśli już alokujesz pamięć, to zawsze ją zwalniaj! Dobry zwyczaj to sprzątanie po sobie, prawda?
http://www.cplusplus.com/reference/clibrary/cstdlib/free/

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