Pitäis saada osoitin tollaiseen taulukkoon funktiosta käsin.
Kaksiulotteisen taulukon osoite on muotoa ** Taulukon_tyyppi. esim.
int taulu[20][20]; ... void tulosta(int **t){ int x,y; for(y=0;y<20;y++)for(x=0;x<20;x++) printf("[%i][%i]=%i", x, y, t[x][y]); }
Ja kaksiulotteisen taulukon osoitin saadaan esim muodossa
tulosta(&taulu[0]);
sqwiik kirjoitti:
Ja kaksiulotteisen taulukon osoitin saadaan esim muodossa
tulosta(&taulu[0]);
... joka on sama asia kuin pelkkä tulosta(taulu);
. Turha siinä on tuollaisia hassuja merkintöjä käyttää. Kirjoita saman tien vaikka näin: *(&(*(&(*(&(taulu))))))
Ainakaan minulla kääntäjä ei tykkää mikäli käytän suoraan (taulu)-viittausta (cannot convert 'int[][] to int**). Siksi käytän aina varmuuden vuoksi tuota &taulu[0]-merkintää :/
Ja se kääntäjä on se ikivanha Borlandin bcc 3.jotain
sqwiikin esimerkkki ei varmasti toimi. &taulu[0] in int* ei int**, kuten myos &taulu[0[0] on int*
int** on osoitin taulukkoon mika sisaltaa int-osoittimia(int*)
freelove on nyt väärässä. Opetelepa ne perusteet uudestaan. Kuten itse sanoit, taulun jokainen alkio on int*, ja silloin osoitin tuohon alkioon (eli &taulu[0]) on int**.
int taulu[10][10]; if ((taulu == &taulu[0]) && (&taulu[0] == &&taulu[0][0])) printf("On sama.");
Aihe on jo aika vanha, joten et voi enää vastata siihen.