Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Taulukkomuuttujat, kertausta C-ohjelmoinnista

Wiki MarkupTaulukot 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;

Wiki Markupint main() \{ &nbsp;&nbsp;&nbsp; // Luodaan
{
    // Luodaan int-taulukko viidelle alkiolle: &nbsp;&nbsp;&nbsp; int OmaTaulukko\
    int OmaTaulukko[5\]; Wiki Markup&nbsp

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

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

Wiki Markup&nbsp;&nbsp;&nbsp;     // Taulukon kaikkien alkioiden tulostaminen: &nbsp;&nbsp;&nbsp; for
    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:

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

Arvo = **OmaTaulukko;
tai

Wiki MarkupArvo = 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>unmigrated-wiki-markup

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