You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

Taulukkomuuttujat, kertausta C-ohjelmoinnista

Taulukot ovat kokoelmia samantyyppisiä muuttujia. Luodessa määritellään kuinka monta alkiota taulukossa on. Tämän jälkeen voidaan taulukon kaikkiin alkioihin viitata []-operaattorin avulla. Huom indeksit alkavat nollasta!

Esimerkki 1: Yksiulotteisen taulukon luonti ja käsittely.

#include <iostream>

using namespace std;

int main()
{
    // Luodaan int-taulukko viidelle alkiolle:
    int OmaTaulukko[5];

    // Asetetaan taulukon ensimmäinen alkio arvoon 1234:
    OmaTaulukko[0] = 1234;

    // Taulukon viimeisen alkion tulostaminen (Huom! viimeisen alkion indeksi on neljä, sillä indeksointi alkaa nollasta):
    cout << "OmaTaulukko[4] = " << OmaTaulukko[4] << endl;

    // Taulukon kaikkien alkioiden tulostaminen:
    for (int i=0; i<5; i++)
{         cout << "OmaTaulukko[" << i << "] = " << OmaTaulukko[i] << endl;     }
}
Taulukko voidaan myös luonnin yhteydessä alustaa alkuarvoihin.
int OmaTaulukko[5] =
{ -1, -2, -3, -4, -5 }
;
Tämä alustaa taulukon alkiot järjestyksessä ensimmäisestä viimeiseen arvoihin -1, -2...-5.
Kaksiuloitteinen taulukko
int OmaTaulukko[5][4];
Voidaan ymmärtää, että ensimmäinen on rivi-indeksi ja toinen on sarakeindeksi. Huomaa, että ensimmäinen indeksi on välillä 0...4 ja toinen 0...3. Taulukon haluttuun paikkaan päästään indeksien avulla seuraavasti:

int Arvo;
Arvo = OmaTaulukko[1][2];
Pelkkä taulukon nimi on osoitin taulukon alkuun. Eli kaksi seuraavaa tapaa osoittaa samaan alkioon:

Arvo = **OmaTaulukko;
tai

Arvo = OmaTaulukko[0][0];
Haluttaessa osoittaa toista taulukon alkiota, voidaan se tehdä seuraavasti:

int *Osoitin;
Osoitin = OmaTaulukko;
Osoitin++; // lisätään osoitetta yhdellä
Arvo = *Osoitin;
Osoitin "juoksee" taulukon läpi rivi kerrallaan.

Testattava ohjelma:

#include <stdio.h>

int main()
{
    int OmaTaulukko[5][4] = { // Alustetaan taulukko
       
{ 1,2,3,4 }
,
        
{ 5,6,7,8 }
,
        
{ 9,10,11,12 }
,
        
{ 13,14,15,16 }
,
        
{ 17,18,19,20 }
    };
    int Arvo;
    Arvo = OmaTaulukko[1][2];  printf("Arvo = %d\n", Arvo);
    Arvo = **OmaTaulukko;      printf("Arvo = %d\n", Arvo);
    Arvo = OmaTaulukko[0][0];  printf("Arvo = %d\n", Arvo);

    int *Osoitin;
    Osoitin = OmaTaulukko;
    Osoitin++; // lisätään osoitetta yhdellä
    Arvo = *Osoitin;           printf("Arvo = %d", Arvo);
}

  • No labels
You must log in to comment.