Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Moniulotteisen taulun siirto funktioon

Burton [21.05.2007 21:57:05]

#

Otsikko kertoo kaiken. Jos minulla on taulukko[20][20], niin kuinka siirrän sen funktioon käytettäväksi?

mitä eroa on näillä:

void funktio(char *taulukko[]);
void funktio(char taulukko[][20]);

Lahha [21.05.2007 23:18:20]

#

Noiden erosta en tiedä, mutta funktiolle voi antaa vaikka kuinka moniulotteisen taulukon antamalla osoittimen taulukon ensimmäiseen alkioon.

void funktio(char *taulukko);
char taulukko[20][20];
funktio(taulukko); //pelkkä taulukon nimi on osoitin ensimmäiseen alkioon.

Metabolix [22.05.2007 03:32:10]

#

Ei, Lahhan tapa ei toimi. Eihän tuota char*-muotoa voi nyt käyttää samalla tavalla kuin alkuperäistä taulua, jos ollenkaan. (Eikä sitä ainakaan välitetä funktiolle noin!)

Jos taulun mitat tiedetään, sen voi välittää tavoista kaikkein loogisimmalla. Muussa tapauksessa helpointa on käyttää yksiulotteista taulua, jonka tietty alkio lasketaan kaavalla y * xkoko + x.

void funktio(char taulu[20][20]);
char taulukko[20][20];
funktio(taulukko);
void funktio(char *taulu, const int xkoko, const int ykoko);

const int leveys = 17, korkeus = 13;
char taulukko[leveys * korkeus];
funktio(taulukko, leveys, korkeus);

void funktio(char *taulu, const int xkoko, const int ykoko)
{
    int x, y;
    for (y = 0; y < ykoko; ++y) {
        for (x = 0; x < xkoko; ++x) {
            taulu[xkoko * y + x] = 0;
        }
    }
}

Burton [22.05.2007 20:00:22]

#

Kiitos vastauksista! Nyt toimii todella hyvin.

Vastaus

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

Tietoa sivustosta