Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: osoitin kaksiuloitteiseen taulukkoon (c++)

haamukuva [22.02.2005 01:34:01]

#

Pitäis saada osoitin tollaiseen taulukkoon funktiosta käsin.

sqwiik [22.02.2005 10:10:05]

#

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]);

Metabolix [22.02.2005 11:56:12]

#

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))))))

sqwiik [22.02.2005 12:07:34]

#

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

freelove [25.02.2005 06:22:07]

#

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*)

Metabolix [25.02.2005 16:27:30]

#

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.");

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta