Forutsetning: Arrays i C
En flerdimensjonal matrise kan betegnes som en matrise med matriser som lagrer homogene data i tabellform. Data i flerdimensjonale arrays lagres vanligvis i rekkefølge i minnet.
De generell form for å deklarere N-dimensjonale arrays er vist nedenfor.
Syntaks:
data_type array_name[size1][size2]....[sizeN];>
- data-type : Type data som skal lagres i matrisen.
- array_name : Navn på matrisen.
- størrelse 1, størrelse 2, …, størrelse N : Størrelse på hver dimensjon.
Eksempler :
grensesnitt vs abstrakt klasse
Two dimensional array: int two_d[10][20]; Three dimensional array: int three_d[10][20][30];>
Størrelse på flerdimensjonale matriser:
Det totale antallet elementer som kan lagres i en flerdimensjonal matrise kan beregnes ved å multiplisere størrelsen på alle dimensjonene.
For eksempel:
- Matrisen int x[10][20] kan lagre totalt (10*20) = 200 elementer.
- Tilsvarende array int x[5][10][20] kan lagre totalt (5*10*20) = 1000 elementer.
For å få størrelsen på matrisen i byte, multipliserer vi størrelsen på et enkelt element med det totale antallet elementer i matrisen.
For eksempel:
- Størrelse på array int x[10][20] = 10 * 20 * 4 = 800 byte. (hvor int = 4 byte)
- Tilsvarende størrelse på int x[5][10][20] = 5 * 10 * 20 * 4 = 4000 byte. (hvor int = 4 byte)
De mest brukte formene for den flerdimensjonale matrisen er:
- Todimensjonal array
- Tredimensjonal array
To-dimensjonal array i C
EN todimensjonal matrise eller 2D-array i C er den enkleste formen for den flerdimensjonale matrisen. Vi kan visualisere en todimensjonal matrise som en matrise av endimensjonale matriser arrangert over hverandre og danner en tabell med 'x' rader og 'y' kolonner der radnummeret varierer fra 0 til (x-1) og kolonnenummeret varierer fra 0 til (y-1).

Grafisk representasjon av todimensjonal matrise i størrelse 3 x 3
Erklæring om todimensjonal array i C
Den grunnleggende formen for å deklarere en 2D-matrise med x rader og og kolonner i C er vist nedenfor.
Syntaks:
data_type array_name[x][y];>
hvor,
- data-type: Type data som skal lagres i hvert element.
- array_name: navnet på matrisen
- x: Antall rader.
- og: Antall kolonner.
Vi kan erklære en todimensjonal heltallsmatrise si 'x' med 10 rader og 20 kolonner som:
Eksempel:
int x[10][20];>
Merk: I denne typen deklarasjoner tildeles matrisen minne i stabelen og størrelsen på matrisen bør være kjent på kompileringstidspunktet, dvs. størrelsen på matrisen er fast. Vi kan også lage en matrise dynamisk i C ved å bruke metoder som er nevnt her.
Initialisering av todimensjonale matriser i C
De ulike måtene en 2D-array kan initialiseres på er som følger:
- Bruke initialiseringsliste
- Bruke løkker
1. Initialisering av 2D-array ved hjelp av Initializer List
Vi kan initialisere en 2D-array i C ved å bruke en initialiseringsliste som vist i eksemplet nedenfor.
Første metode:
int x[3][4] = {0, 1 ,2 ,3 ,4 , 5 , 6 , 7 , 8 , 9 , 10 , 11}> Arrayen ovenfor har 3 rader og 4 kolonner. Elementene i klammeparentesene fra venstre mot høyre lagres i tabellen også fra venstre mot høyre. Elementene vil bli fylt i matrisen i rekkefølge: de første 4 elementene fra venstre vil bli fylt i den første raden, de neste 4 elementene i den andre raden, og så videre.
Andre metode (bedre) :
int x[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};> Denne typen initialisering bruker nestede klammeparenteser. Hvert sett med indre seler representerer én rad. I eksemplet ovenfor er det totalt tre rader, så det er tre sett med indre seler. Fordelen med denne metoden er at den er lettere å forstå.
Merk: Antall elementer i initialiseringslisten skal alltid være mindre enn eller lik det totale antallet elementer i matrisen.
Vi kan også deklarere matrisen uten å definere størrelsen på raden hvis vi bruker listeinitialisering. Kompilatoren vil automatisk utlede størrelsen på matrisen i dette tilfellet:
data_type array_name[][y] = {...} ;> Det er fortsatt obligatorisk å definere antall kolonner.
2. Initialisering av 2D-array ved hjelp av Loops
Vi kan bruke hvilken som helst C-løkke for å initialisere hvert medlem av en 2D-array en etter en som vist i eksemplet nedenfor.
Eksempel:
int x[3][4]; for(int i = 0; i <3; i++){ for(int j = 0; j < 4; j++){ x[i][j] = i + j; } }> Denne metoden er nyttig når verdiene til hvert element har en sekvensiell relasjon.
Tilgang til elementer av todimensjonale arrays i C
Elementer i 2D-matriser er tilgjengelig ved hjelp av radindekser og kolonneindekser. Hvert element i en 2D-array kan refereres til ved:
Syntaks:
array_name[i][j]>
hvor,
- Jeg: Radindeksen.
- j: Kolonneindeksen.
Eksempel:
int x[2][1];>
Eksemplet ovenfor representerer elementet i tredje rad og andre kolonne.
nat vs seng
Merk : I matriser, hvis størrelsen på en matrise er N. Indeksen vil være fra 0 til N-1. Derfor, for radindeks 2 er radnummer 2+1 = 3. For å skrive ut alle elementene i en todimensjonal matrise kan vi bruke nestet for løkker. Vi vil kreve to til 'løkker. En for å krysse radene og en annen for å krysse kolonner.
For å skrive ut hele matrisen, får vi tilgang til hvert element en etter en ved hjelp av løkker. Rekkefølgen for gjennomkjøring kan være rad-hovedrekkefølge eller kolonne-hovedrekkefølge avhengig av kravet. Eksemplet nedenfor demonstrerer rad-major-traversering av en 2D-array.
Eksempel:
C
// C Program to print the elements of a> // Two-Dimensional array> #include> int> main(>void>)> {> >// an array with 3 rows and 2 columns.> >int> x[3][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } };> >// output each array element's value> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <2; j++) {> >printf>(>'Element at x[%i][%i]: '>, i, j);> >printf>(>'%d
'>, x[i][j]);> >}> >}> >return> (0);> }> // This code is contributed by sarajadhav12052009> |
>
>Produksjon
Element at x[0][0]: 0 Element at x[0][1]: 1 Element at x[1][0]: 2 Element at x[1][1]: 3 Element at x[2][0]: 4 Element at x[2][1]: 5>
Tidskompleksitet: O(N*M) , hvor N(here 3) og M(here 2) er antall henholdsvis rader og kolonner.
Romkompleksitet:O(1)
Hvordan lagres 2D-matriser i minnet?
Elementene i 2-D-matrisen må lagres sammenhengende i minnet. Siden datamaskinene har lineære minneadresser, må 2-D-matrisene lineariseres for å muliggjøre lagring. Det er to måter å oppnå linearisering av matriseelementer på:
- Rekke-major- Lineariseringsteknikken lagrer først den første raden i arrayet, deretter den andre raden i arrayet, deretter den tredje raden, og så videre. (dvs. elementer lagres radvis. Rader er oppført på grunnlag av kolonner)
- Kolonne-major – Denne lineariseringsteknikken lagrer først den første kolonnen, deretter den andre kolonnen, deretter den tredje kolonnen, og så videre, dvs. (elementer lagres kolonnevis. Kolonner er oppført på basis av rader)
Datamaskinen holder ikke styr på adressene til alle elementene i arrayet, men holder styr på Base Address (startadressen til det aller første elementet) og beregner adressene til elementene når det er nødvendig.
For å vite mer, se artikkelen - Beregning av adresse til element av 1-D, 2-D og 3-D
Tredimensjonal array i C
EN Tredimensjonal array eller 3D array i C er en samling av todimensjonale arrays. Det kan visualiseres som flere 2D-arrayer stablet oppå hverandre.

Grafisk representasjon av tredimensjonal matrise i størrelse 3 x 3 x 3
Erklæring om tredimensjonal array i C
Vi kan erklære en 3D-matrise med x 2D-matriser som hver har og rader og Med kolonner ved å bruke syntaksen vist nedenfor.
Syntaks:
data_type array_name[x][y][z];>
- data-type: Type data som skal lagres i hvert element.
- array_name: navnet på matrisen
- x: Antall 2D-matriser.
- og: Antall rader i hver 2D-array.
- Med: Antall kolonner i hver 2D-array.
Eksempel:
int array[3][3][3];>
Initialisering av tredimensjonal array i C
Initialisering i en 3D-matrise er den samme som for 2D-matriser. Forskjellen er når antall dimensjoner øker, så antallet nestede bukseseler vil også øke.
En 3D-matrise i C kan initialiseres ved å bruke:
- Initialiseringsliste
- Løkker
Initialisering av 3D-array ved hjelp av Initializer List
Metode 1 :
int x[2][3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};> Metode 2 (bedre) :
int x[2][3][4] = { { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }, { {12,13,14,15}, {16,17,18,19}, {20,21,22,23} } };> Igjen, akkurat som 2D-matrisene, kan vi også deklarere 3D-matrisene uten å spesifisere størrelsen på de første dimensjonene hvis vi bruker initialiseringsliste for initialisering. Kompilatoren vil automatisk utlede størrelsen på den første dimensjonen. Men vi må fortsatt spesifisere resten av dimensjonene.
data_type array_name[][y][z] = {....};> Initialisering av 3D-array ved hjelp av loops
Det ligner også på 2D-array med en mer nestet sløyfe for tilgang til en dimensjon til.
int x[2][3][4]; for (int i=0; i<2; i++) { for (int j=0; j<3; j++) { for (int k=0; k<4; k++) { x[i][j][k] = (some_value); } } }> Tilgang til elementer i tredimensjonal array i C
Tilgang til elementer i 3D-matriser ligner også på 2D-matriser. Forskjellen er at vi må bruke tre løkker i stedet for to løkker for en ekstra dimensjon i 3D-arrayer.
Syntaks:
array_name[x][y][z]>
hvor,
- x: Indeks for 2D-array.
- og: Indeks for den 2D-array-raden.
- Med: Indeks for den 2D-array-kolonnen.
C
// C program to print elements of Three-Dimensional Array> #include> int> main(>void>)> {> >// initializing the 3-dimensional array> >int> x[2][3][2] = { { { 0, 1 }, { 2, 3 }, { 4, 5 } },> >{ { 6, 7 }, { 8, 9 }, { 10, 11 } } };> >// output each element's value> >for> (>int> i = 0; i <2; ++i) {> >for> (>int> j = 0; j <3; ++j) {> >for> (>int> k = 0; k <2; ++k) {> >printf>(>'Element at x[%i][%i][%i] = %d
'>, i,> >j, k, x[i][j][k]);> >}> >}> >}> >return> (0);> }> |
>
>
tøm cache npmProduksjon
Element at x[0][0][0] = 0 Element at x[0][0][1] = 1 Element at x[0][1][0] = 2 Element at x[0][1][1] = 3 Element at x[0][2][0] = 4 Element at x[0][2][1] = 5 Element at x[1][0][0] = 6 Element at x[1][0][1] = 7 Element at x[1][1][0] = 8 Element at x[1][1][1] = 9 Element at x[1][2][0] = 10 Element at x[1][2][1] = 11>
På lignende måter kan vi lage matriser med et hvilket som helst antall dimensjoner. Imidlertid øker kompleksiteten også etter hvert som antall dimensjoner øker. Den mest brukte flerdimensjonale matrisen er den todimensjonale matrisen.
Arrays er også nært beslektet med pekere i C-språk. For å vite mer om forholdet mellom matriser og pekere i C, se dette artikkel.