- 1 1. Sissejuhatus
- 2 2. Mis on kahemõõtmeline massiiv
- 3 3. Kahemõõtmelise massiivi deklareerimine ja initsialiseerimine
- 3.1 Deklaratsioon
- 3.2 Initsialiseerimine
- 3.3 Koodinäide: deklaratsioon ja initsialiseerimine
- 3.4 Väljund
- 3.5 4. Kahemõõtmeliste massiivide kasutamine: elementide viitamine ja muutmine
- 3.6 Elementidele ligipääs
- 3.7 Elementide muutmine
- 3.8 Kahemõõtmelise massiivi läbimine tsüklitega
- 3.9 Näide: kõikide elementide seadmine kindlale väärtusele
- 4 5. Kahemõõtmeliste massiivide mälustruktuur ja selle mõistmine
- 5 6. Praktilised näited: maatriksarvutused ja mängulaua loomine
- 6 7. Kahemõõtmeliste massiivide ja pointerite seos
- 7 8. Kuidas dünaamiliselt eraldada ja vabastada kahemõõtmelisi massiive
- 8 9. Tähtsad tähelepanekud kahemõõtmeliste massiivide kasutamisel
- 9 10. Kokkuvõte
1. Sissejuhatus
C-keel on üks olulisemaid ja ajalooliselt tähtsamaid programmeerimiskeeli. Selle sees on “massiivid” hädavajalik funktsioon andmete tõhusaks haldamiseks ja töötlemiseks. Eriti “kahemõõtmelised massiivid” on väga kasulikud maatriksite või tabelikujuliste andmete käsitlemisel.
Selles artiklis selgitame kahemõõtmelisi massiive C-keeles algajatele arusaadaval viisil. Kirjeldame samm-sammult nende põhilist kasutamist ja edasijõudnud rakendusi, pakkudes lugejale praktilist teavet, mida saab kasutada tegelike programmide kirjutamisel.
Massiivide tähtsus C-keeles
C-keele massiivid on andmestruktuurid, mis võimaldavad hallata korraga mitut sama tüüpi väärtust. See säästab vajadust deklareerida eraldi muutujaid ja hoiab koodi lihtsana. Näiteks, kui on vaja salvestada mitu numbrit või stringi, võimaldab massiiv neid tõhusalt käsitleda.
Eriti “kahemõõtmelised massiivid” on kasulikud järgmistes olukordades:
- Matemaatiliste maatriksite arvutamine
- Mängulaudade (nt male, Othello) haldamine
- Tabelite või arvutustabelite struktuuri töötlemine
Mida sellest artiklist õpid
Sellest artiklist saad samm-sammult teada järgmised asjad:
- Kahemõõtmeliste massiivide põhiline struktuur ja deklaratsioon
- Initsialiseerimine ja elementide juurde pääsemine
- Kahemõõtmeliste massiivide haldamine mälus
- Praktilised näited programmides
- Kuidas dünaamiliselt eraldada ja vabastada kahemõõtmelisi massiive
- Levinud vead ja olulised tähelepanekud massiividega töötamisel
Isegi algajad saavad selle artikli abil õppida kahemõõtmeliste massiivide põhitõdesid ja omandada oskusi, mida saab kasutada tegelikes programmides.
Kellele see artikkel on mõeldud
See selgitus on mõeldud nii algajatele, kes on just C-keele õppimist alustanud, kui ka kesktasemel programmeerijatele, kes soovivad oma teadmisi laiendada. Eriti kasulik neile:
- Kellel on põhiline arusaam massiividest, kuid pole kunagi kasutanud kahemõõtmelisi massiive
- Kes soovivad käsitleda tabelikujulisi andmeid programmis
- Kes tahavad C-keele põhikäske üle korrata
2. Mis on kahemõõtmeline massiiv
C-keeles on “kahemõõtmeline massiiv” andmestruktuur, mis salvestab andmeid ridade ja veergude kaupa. See toimib kui “massiivide massiiv”. See on väga mugav näiteks maatriksite arvutamisel või tabelite töötlemisel ning seda kasutatakse sageli programmides.
Siin selgitame üksikasjalikult kahemõõtmelise massiivi põhimõisteid ja struktuuri.
Kahemõõtmelise massiivi põhistruktuur
Kahemõõtmeline massiiv koosneb mitmest reast ja veerust. Konkreetsemalt on iga rida ühemõõtmeline massiiv ning need moodustavad koos kahemõõtmelise massiivi.
Näide: kahemõõtmelise massiivi kujutis
Andmed salvestatakse järgmiselt:
array[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
Antud juhul on array
3 rida ja 4 veergu. Indekseid kasutades pääseb ligi konkreetsetele elementidele.
array[0][0]
= “1”array[2][3]
= “12”
Kahemõõtmelise massiivi kasutusalad
Kahemõõtmelisi massiive kasutatakse järgmistes olukordades:
- Matemaatilised maatriksoperatsioonid
Näide: maatriksite liitmine ja korrutamine - Tabelikujuliste andmete haldamine
Näide: arvutustabelid või andmebaasi struktuurid - Mänguarendus
Näide: malelaua või Othello laua oleku haldamine - Pilditöötlus
Näide: piksli värviandmete salvestamine
Nagu nendest kasutusjuhtudest näha, on kahemõõtmeline massiiv oluline baasstruktuur keeruliste andmete tõhusaks haldamiseks.
Erinevus ühe- ja kahemõõtmelise massiivi vahel
Ühemõõtmelise massiivi omadused
Ühemõõtmeline massiiv salvestab andmeid “lineaarselt”.
int array[5] = {1, 2, 3, 4, 5};
Indekseid kasutades viidatakse elementidele järjest:
array[0]
= “1”array[4]
= “5”
Kahemõõtmelise massiivi omadused
Kahemõõtmeline massiiv salvestab andmeid “ridade” ja “veergude” kaupa.
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
Indekseid kombineerides viidatakse elementidele:
array[0][2]
= “3”array[1][0]
= “4”
Seega on kahemõõtmelised massiivid eriti kasulikud keeruliste andmestruktuuride käsitlemisel.
3. Kahemõõtmelise massiivi deklareerimine ja initsialiseerimine
C-keeles tuleb kahemõõtmelise massiivi kasutamiseks see esmalt deklareerida ning vajaduse korral initsialiseerida. Järgnevalt selgitame täpsemalt deklaratsiooni ja initsialiseerimise viise.
Deklaratsioon
Kahemõõtmelise massiivi deklaratsioon tehakse järgmiselt:
tüüp massiivi_nimi[read][veerud];
- tüüp: massiivis salvestatavate andmete tüüp (nt
int
,float
,char
). - read ja veerud: täisarvud, mis näitavad massiivi suurust.
Näide deklaratsioonist
Näiteks, 3 rida ja 4 veergu sisaldava int
-massiivi deklaratsioon:
int array[3][4];
See reserveerib mälu, kuhu saab salvestada 3×4 = 12 täisarvu.
Initsialiseerimine
Massiivi võib initsialiseerida deklareerimise ajal, määrates sellele algväärtused. Selleks on mitu võimalust.
Meetod 1: kõik elemendid selgesõnaliselt
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
Mälu paigutus:
1 2 3
4 5 6
array[0][0]
→ 1array[1][2]
→ 6
Meetod 2: ainult osa elemente
int array[2][3] = {
{1, 2},
{4}
};
Mälu paigutus:
1 2 0
4 0 0
Meetod 3: {0}
kõigi elementide nullimiseks
int array[3][4] = {0};
Kõik väärtused seatakse nulliks.
Olulised märkused initsialiseerimisel
- Ridade arv peab alati olema määratud
int array[][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8}
};
- Veergude arv peab olema määratud
Koodinäide: deklaratsioon ja initsialiseerimine
Järgmine kood näitab, kuidas deklareerida kahemõõtmeline massiiv, sellele väärtused määrata ning tulemused välja printida:
#include <stdio.h>
int main() {
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("array[%d][%d] = %d\n", i, j, array[i][j]);
}
}
return 0;
}
Väljund
array[0][0] = 1
array[0][1] = 2
array[0][2] = 3
array[1][0] = 4
array[1][1] = 5
array[1][2] = 6
4. Kahemõõtmeliste massiivide kasutamine: elementide viitamine ja muutmine
C-keeles saab kahemõõtmelise massiivi elementidele ligi ning neid muuta. Järgnevalt selgitame üksikasjalikult, kuidas elemente viidata ja töödelda.
Elementidele ligipääs
Kahemõõtmelises massiivis määratakse element rea- ja veeruindeksi kaudu.
Põhiline ligipääsuviis
array[rida][veerg]
Näiteks järgmine massiiv:
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
array[0][0]
→ 1 (1. rida, 1. veerg)array[1][2]
→ 6 (2. rida, 3. veerg)
Näide: elementide väljastamine
#include <stdio.h>
int main() {
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
printf("array[0][0] = %d\n", array[0][0]);
printf("array[1][2] = %d\n", array[1][2]);
return 0;
}
Väljund
array[0][0] = 1
array[1][2] = 6
Elementide muutmine
Massiivi elementidele saab määrata uusi väärtusi.
Väärtuse muutmise viis
array[rida][veerg] = uus_väärtus;
Näide: väärtuste muutmine programmis
#include <stdio.h>
int main() {
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// väärtuste muutmine
array[0][0] = 10;
array[1][2] = 20;
// tulemuste väljastamine
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("array[%d][%d] = %d\n", i, j, array[i][j]);
}
}
return 0;
}
Väljund
array[0][0] = 10
array[0][1] = 2
array[0][2] = 3
array[1][0] = 4
array[1][1] = 5
array[1][2] = 20
Kahemõõtmelise massiivi läbimine tsüklitega
Kahemõõtmeliste massiivide käsitlemisel kasutatakse sageli pesastatud tsükleid.
Näide: ridade ja veergude läbimine
#include <stdio.h>
int main() {
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// elementide väljastamine
for (int i = 0; i < 2; i++) { // ridade tsükkel
for (int j = 0; j < 3; j++) { // veergude tsükkel
printf("array[%d][%d] = %d\n", i, j, array[i][j]);
}
}
return 0;
}
Väljund
array[0][0] = 1
array[0][1] = 2
array[0][2] = 3
array[1][0] = 4
array[1][1] = 5
array[1][2] = 6
Näide: kõikide elementide seadmine kindlale väärtusele
Tsükleid kasutades saab massiivi kõik elemendid seada ühele kindlale väärtusele.
Näide: kõik väärtused = 5
#include <stdio.h>
int main() {
int array[3][3];
// kõigi elementide väärtuseks pannakse 5
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
array[i][j] = 5;
}
}
// tulemuste väljastamine
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("array[%d][%d] = %d\n", i, j, array[i][j]);
}
}
return 0;
}
Väljund
array[0][0] = 5
array[0][1] = 5
array[0][2] = 5
array[1][0] = 5
array[1][1] = 5
array[1][2] = 5
array[2][0] = 5
array[2][1] = 5
array[2][2] = 5
5. Kahemõõtmeliste massiivide mälustruktuur ja selle mõistmine
C-keeles on oluline mõista, kuidas kahemõõtmelised massiivid mällu paigutatakse. See aitab parandada programmi tõhusust ja muudab töö pointeritega sujuvamaks.
Mälupaigutus
C-keeles salvestatakse kahemõõtmelised massiivid tegelikult järjestikku ühemõõtmelisse mällu. Seda paigutust nimetatakse rea-järjekorraks (row-major).
Mis on row-major?
Row-major tähendab, et massiivi andmed salvestatakse ridade kaupa järjestikku.
Näide: massiivi mälustruktuur
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
Mälu kujul salvestatakse see järgmiselt:
Mälu: 1 2 3 4 5 6
array[0][0]
→ esimene mälupositsioonarray[0][1]
→ teine positsioonarray[1][0]
→ neljas positsioon
Elementidele viitamine indeksitega
C-keeles arvutatakse indeksite põhjal elementide asukoht järgmiselt:
array[i][j] = *(array + (i * veergude_arv) + j)
Näide: mäluaadressi arvutus
Massiivis array[2][3]
:
array[1][2]
leitakse järgmisel viisil:
*(array + (1 * 3) + 2) = *(array + 5)
Pointerite kasutamine
Kahemõõtmelisi massiive saab käsitleda ka pointerite abil, mis annab rohkem paindlikkust.
Pointer ja kahemõõtmeline massiiv
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
int *ptr = &array[0][0];
printf("%d\n", *(ptr + 4)); // väljund: 5
Visuaalne selgitus
Mälu: 1 2 3 4 5 6
Indeksid:
[0][0] [0][1] [0][2] [1][0] [1][1] [1][2]
Soovitused efektiivseks kasutamiseks
- Kasuta row-major järjekorda – fikseeri rida ja liigu veergude kaupa.
for (int i = 0; i < read; i++) {
for (int j = 0; j < veerud; j++) {
// row-major ligipääs
}
}
- Kasutage pointereid – see vähendab arvutuskulusid.
6. Praktilised näited: maatriksarvutused ja mängulaua loomine
Kahemõõtmelisi massiive kasutatakse sageli matemaatikas ja mänguarenduses. Siin toome kaks praktilist näidet: maatriksarvutused ja mängulaua haldamine.
Näide: maatriksite liitmine
#include <stdio.h>
int main() {
int matrix1[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int matrix2[3][3] = {
{9, 8, 7},
{6, 5, 4},
{3, 2, 1}
};
int result[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
printf("Maatriksite liitmise tulemus:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Väljund
Maatriksite liitmise tulemus:
10 10 10
10 10 10
10 10 10
Näide: maatriksite korrutamine
#include <stdio.h>
int main() {
int matrix1[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int matrix2[3][3] = {
{9, 8, 7},
{6, 5, 4},
{3, 2, 1}
};
int result[3][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
printf("Maatriksite korrutamise tulemus:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Väljund
Maatriksite korrutamise tulemus:
30 24 18
84 69 54
138 114 90
Näide: Othello mängulaua loomine
#include <stdio.h>
int main() {
int board[8][8] = {0};
// algseisu määramine
board[3][3] = 1; // valge
board[3][4] = 2; // must
board[4][3] = 2; // must
board[4][4] = 1; // valge
printf("Othello laua algseis:\n");
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
printf("%d ", board[i][j]);
}
printf("\n");
}
return 0;
}
Väljund
Othello laua algseis:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 2 0 0 0
0 0 0 2 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
7. Kahemõõtmeliste massiivide ja pointerite seos
C-keeles on kahemõõtmelistel massiividel ja pointeritel tihe seos. Pointerite kasutamine võimaldab massiive tõhusamalt töödelda. Järgnevalt selgitame põhikontseptsioone ja toome praktilisi näiteid.
Põhiline seos
Kahemõõtmeline massiiv on tegelikult „massiiv massiividest“. Seetõttu saab iga rida käsitleda pointerina.
Näide: kahemõõtmelise massiivi struktuur
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
See massiiv paikneb mälus järgmiselt:
[1] [2] [3] [4] [5] [6]
array
→ osutab massiivi alguselearray[i]
→ osutab tervele realearray[i][j]
→ konkreetsele elemendile
Elementidele ligipääs pointeritega
*(array[0] + 1) // sama mis array[0][1]
*(*(array + 1) + 2) // sama mis array[1][2]
Kahemõõtmelise massiivi edasiandmine funktsioonile
Sageli on mugav kasutada pointereid massiivide funktsioonidesse edastamiseks.
Näide
#include <stdio.h>
void printArray(int (*array)[3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
}
int main() {
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
printArray(array, 2);
return 0;
}
Väljund
1 2 3
4 5 6
int (*array)[3]
tähendab pointerit massiivile, millel on 3 veergu.- Funktsioonis pääseb elementidele ligi ridade ja veergude kaudu.
Dünaamilised kahemõõtmelised massiivid pointeritega
Pointereid kasutades saab kahemõõtmelisi massiive luua dünaamiliselt programmi töö ajal.
Näide: dünaamiline eraldamine
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows = 2, cols = 3;
int** array = malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
array[i] = malloc(cols * sizeof(int));
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array[i][j] = i * cols + j + 1;
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
for (int i = 0; i < rows; i++) {
free(array[i]);
}
free(array);
return 0;
}
Väljund
1 2 3
4 5 6
8. Kuidas dünaamiliselt eraldada ja vabastada kahemõõtmelisi massiive
C-keeles saab kasutada dünaamilist mälu, et luua kahemõõtmelisi massiive programmi töö ajal. See on kasulik siis, kui massiivi suurus pole teada kompileerimise ajal.
Põhitõed
Dünaamiliseks eraldamiseks kasutatakse funktsioone malloc
ja calloc
.
Mälu suuruse saab määrata jooksvalt vastavalt vajadusele.
Meetodid
- Pointerite massiiv (iga rea jaoks eraldi mälu)
- Ühemõõtmeline massiiv, mida kasutatakse kahemõõtmelisena
Meetod 1: pointerite massiiv
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows = 3, cols = 4;
int** array = malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
array[i] = malloc(cols * sizeof(int));
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array[i][j] = i * cols + j + 1;
}
}
printf("Dünaamiliselt loodud 2D massiiv:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
for (int i = 0; i < rows; i++) {
free(array[i]);
}
free(array);
return 0;
}
Väljund
Dünaamiliselt loodud 2D massiiv:
1 2 3 4
5 6 7 8
9 10 11 12
Meetod 2: ühe massiivina
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows = 3, cols = 4;
int* array = malloc(rows * cols * sizeof(int));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array[i * cols + j] = i * cols + j + 1;
}
}
printf("Ühemõõtmeline massiiv 2D-na:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array[i * cols + j]);
}
printf("\n");
}
free(array);
return 0;
}
Väljund
Ühemõõtmeline massiiv 2D-na:
1 2 3 4
5 6 7 8
9 10 11 12
9. Tähtsad tähelepanekud kahemõõtmeliste massiivide kasutamisel
Kahemõõtmelised massiivid on võimsad ja kasulikud, kuid valesti kasutades võivad need põhjustada vigu või mäluleke. Siin on peamised punktid, millele tähelepanu pöörata.
Vältida tuleb väljaspool piire ligipääsu
Kui üritatakse massiivi piire ületada, võib programm käituda ettearvamatult või kokku kukkuda.
Näide: viga
#include <stdio.h>
int main() {
int array[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
printf("%d\n", array[2][0]); // Vale: rea 2 pole olemas
return 0;
}
Õige lahendus
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", array[i][j]);
}
}
Mäluleke
Kui dünaamiliselt eraldatud mälu ei vabastata, tekib mäluleke.
Näide: vale vabastamine
#include <stdlib.h>
int main() {
int rows = 2, cols = 3;
int** array = malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
array[i] = malloc(cols * sizeof(int));
}
free(array); // Vale: read jäeti vabastamata
return 0;
}
Õige vabastamine
for (int i = 0; i < rows; i++) {
free(array[i]);
}
free(array);
Suuruse muutmise piirangud
Staatilise massiivi suurust ei saa muuta. Kui on vaja paindlikkust, tuleb kasutada dünaamilist massiivi ja vajadusel realloc
funktsiooni.
Algväärtustamine
Algväärtustamata massiivis võivad olla „prügiväärtused“.
int array[2][3];
printf("%d\n", array[0][0]); // ettearvamatu väärtus
Õige viis
int array[2][3] = {0};
või dünaamiliselt:
int* array = calloc(rows * cols, sizeof(int));
Mälu kasutamise tõhusus
Kõige parem on andmetele ligi pääseda row-major järjekorras:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array[i][j]);
}
}
Kontrollnimekiri levinud vigade kohta
- Kas ei ületata rea/veeru piire?
- Kas dünaamiline mälu vabastatakse alati?
- Kas massiiv on enne kasutamist initsialiseeritud?
- Kas suuruse muutmisel kasutatakse õigesti
realloc
? - Kas andmeid töödeldakse row-major järjekorras?

10. Kokkuvõte
Selles artiklis vaatasime läbi C-keele kahemõõtmelised massiivid, alustades põhitõdedest ja lõpetades edasijõudnud kasutusega. Need on kasulikud nii maatriksarvutustes, mänguarenduses kui ka andmetöötluses.
1. Põhistruktuur
- Kahemõõtmeline massiiv koosneb ridadest ja veergudest.
int array[read][veerud];
2. Initsialiseerimine ja elementide muutmine
- Massiive saab initsialiseerida mitmel viisil.
- Näide:
int array[2][3] = { {1,2,3}, {4,5,6} };
- Kõik nulliks:
int array[2][3] = {0};
3. Mälustruktuur ja pointerid
- Massiivid salvestatakse row-major järjekorras.
- Pointereid saab kasutada tõhusamaks tööks.
*(*(array + i) + j);
4. Dünaamiline mälu
- Dünaamiline mälu võimaldab luua massiive jooksvalt.
- Tuleb alati mälu vabastada, et vältida leket.
5. Tähtsad tähelepanekud
- Vältida piiri ületamist
- Alati initsialiseerida
- Dünaamilisel kasutamisel vabastada mälu
Kahemõõtmeliste massiivide eelised
- Maatriksite arvutused
- Mänguarendus (nt male, Othello)
- Tabelite andmetöötlus
- Pilditöötlus
Edasised sammud
- Mitmemõõtmelised massiivid (3D ja edasi)
- Pointerite keerukam kasutamine
- Mälu haldamine, sealhulgas
realloc
abil suuruse muutmine
Lõppsõna
Kahemõõtmeliste massiivide valdamine aitab oluliselt arendada C-keele programmeerimisoskusi. Korda praktikas õpitud teadmisi ja kasuta ametlikku dokumentatsiooni või täiendavaid õppeallikaid keerukamate teemade puhul.