Moze ktos wytlumaczyc jak to jest z tymi wskaznikami do tablicy jedno- i dwuwymiarowj? Jak to wszystko interpretowac ?
Z gory dzieki.
Wskaźnik na tablicę jednowymiarową to po prostu wskaźnik na pierwszy jej element (można używać wraz z operatorem [] by 'przejrzeć' całą tablicę). Z kolei tablica dwuwymiarowa to tablica wskaźników na tablice, więc wskaźnik na nią to wskaźnik na pierwszy element 'nadrzędnej' tablicy.
Ghostek napisał(a)
Wskaźnik na tablicę jednowymiarową to po prostu wskaźnik na pierwszy jej element (można używać wraz z operatorem [] by 'przejrzeć' całą tablicę). Z kolei tablica dwuwymiarowa to tablica wskaźników na tablice, więc wskaźnik na nią to wskaźnik na pierwszy element 'nadrzędnej' tablicy.
a propos tablic wielowymiarowych (2d w góre) statycznych, wczoraj kombinowałem (dla Coldpeera) podobna sprawe i co sie okazało: tablica statyczna jest (przynajmniej dla gcc) zwartym elementem, pojedynczym ciągiem bajtów, nie (tablicą wskażnikow)^(n-1) do jednowymiarowych tablic.
przykład: http://carramba.ath.cx/flabra/temp/test2.c
traktowanie powyzszej tablicy jak w: http://carramba.ath.cx/flabra/temp/test.c czyli np:
void wypelnij3(int x,int y,int** t){
int j=0;
while(j<y){
int i=0;
while(i<x){
printf("[%d:%d]=%d\n",i,j,t[j][i]=j*x+i+21);
i++;
}
j++;
}
}
spowoduje tylko błąd naruszenia ochrony pamięci
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.