C möjliggör matriser med två eller flera dimensioner. En tvådimensionell (2D) matris är en matris med matriser. En tredimensionell (3D) matris är en matris av matriser.

Vid C-programmering kan en matris ha två, tre eller till och med tio eller fler dimensioner. De maximala måtten ett C-program kan ha beror på vilken kompilator som används.

Fler dimensioner i en matris innebär att mer data hålls, men också större svårigheter att hantera och förstå matriser.

Hur man förklarar en flerdimensionell matris i C.

En flerdimensionell matris deklareras med hjälp av följande syntax:

typ array_name [d1] [d2] [d3] [d4] [dn];

Där varje d är en dimension och dn är storleken på den slutliga dimensionen.

Exempel:

  1. int-tabell [5] [5] [20];
  2. float arr [5] [6] [5] [6] [5];

I exempel 1:

  • int anger arktypens heltal.
  • tabell är namnet på vår 3D-array.
  • Vår grupp kan innehålla 500 heltalstyp. Detta antal uppnås genom att multiplicera värdet för varje dimension. I detta fall: 5x5x20 = 500 .

I exempel 2:

  • Array arr är en femdimensionell matris.
  • Den kan innehålla 4500 flytande punktelement ( 5x6x5x6x5 = 4500 ).

Kan du se kraften i att deklarera en matris över variabler? När det gäller att hålla flera värden i C-programmering, skulle vi behöva deklarera flera variabler. Men en enda grupp kan innehålla tusentals värden.

Obs: För enkelhetens skull diskuterar denna tutorial endast 3D-arrayer. När du har tagit logiken för hur 3D-arrayen fungerar kan du hantera 4D-arrayer och större.

Förklaring av en 3D-array

Låt oss titta närmare på en 3D-grupp. En 3D-matris är i huvudsak en matris med matriser av matriser: det är en matris eller samling av 2D-arrayer, och en 2D-matris är en matris med 1D-array.

Det kan låta lite förvirrande, men oroa dig inte. När du tränar på att arbeta med multidimensionella matriser börjar du förstå logiken.

Diagrammet nedan kan hjälpa dig att förstå:

3D Array konceptuell vy

3D-minneskarta.

Initiera en 3D-array i C

Som alla andra variabler eller arrayer kan en 3D-array initialiseras vid tidpunkten för sammanställningen. Som standard innehåller en oinitialiserad 3D-grupp i C "sopor" -värden, inte giltiga för den avsedda användningen.

Låt oss se ett komplett exempel på hur du initierar en 3D-array:

Förklaring och initiering 3D Array

 #include #include void main () {int i, j, k; int arr [3] [3] [3] = {{{11, 12, 13}, {14, 15, 16}, {17, 18, 19}}, {{21, 22, 23}, {24, 25, 26}, {27, 28, 29}}, {{31, 32, 33}, {34, 35, 36}, {37, 38, 39}}, }; clrscr (); printf ("::: 3D Array Elements ::: \ n \ n"); för (i = 0; i <3; i ++) {för (j = 0; j <3; j ++) {för (k = 0; k <3; k ++) {printf ("% d \ t", arr [ i] [j] [k]); } printf ("\ n"); } printf ("\ n"); } getch (); } 

Skriva ut:

I koden ovan har vi deklarerat en flerdimensionell heltalskal med namnet “arr” som kan innehålla 3x3x3 (eller 27) element.

Vi har också initialiserat det flerdimensionella arrayet med några heltal.


Som jag sa tidigare är en 3D-array en matris med 2D-arrayer. Jag har delat in delar i enlighet därmed för att förstå. Titta på C-kodprovet ovan,

  • I linjerna 9-13, 14-18 och 19-23 är varje block en 2D-grupp.
  • Sammantaget gör raderna 2-24 en 3D-grupp.

För att anropa värden från arrayen, föreställ dig 3D-arrayen ovan som en samling av tabeller. Varje kapslad konsol är ett bord med rader och kolumner. För att få åtkomst till eller lagra något element i en 3D-grupp måste du känna till dess tabellnummer, radnummer och kolumnnummer.

Ett exempel: Du måste komma åt värde 25 från ovanstående 3D-matris. Så, kontrollera först tabellen: i detta fall är 25 i tabell 1 (kom ihåg: tabeller, rader, kolumner räknas börjar vid 0, så det andra bordet är tabell 1). När du hittat tabellnumret ska du nu kontrollera vilken rad i tabellen som har värdet och sedan kolumnnumret. Så tillämpning ovan logik, 25 ligger i tabell 1, rad 1 och kolumn 1, varför adressen är arr [1] [1] [1] . Skriv ut denna adress så får du utdata: 25.

Den konceptuella syntaxen för en 3D-matris i C

Den konceptuella syntaxen för 3D-array är detta:

data_type array_name [tabell] [rad] [kolumn];

Om du vill lagra värden i någon 3D-matris pekar först tabellnummer, sedan radnummer och slutligen till kolumnnummer.

Några hypotetiska exempel:

arr [0] [1] [2] = 32;
arr [1] [0] [1] = 49;

Lagring av värden på en kontinuerlig plats med en slinga

Pekarsyntaxen ovan tilldelar värden till en viss plats i en matris, men om du vill lagra värden på flera platser automatiskt bör du använda en slinga.

Här är ett exempel med kommandot for loop:

 #include #include void main () {int i, j, k, x = 1; int arr [3] [3] [3]; clrscr (); printf ("::: 3D Array Elements ::: \ n \ n"); för (i = 0; i <3; i ++) {för (j = 0; j <3; j ++) {för (k = 0; k <3; k ++) {arr [i] [j] [k] = x; printf ( "% d \ t", arr [i] [j] [k]); x ++; } printf ("\ n"); } printf ("\ n"); } getch (); } 

Din åsikt

Är denna handledning användbar för dig?

  • Ja väldigt mycket.
  • Nej inte alls
  • Jag vet detta, men letar efter fler exempel.
Se resultat