Matrici in C

Le matrici (anche dette array bidimensionali) sono variabili complesse, composte da variabili (array) omogenei tra di loro (dati dello stesso tipo → tutti int, tutti float, tutti char).

Inizializzazione matrice

int corso [200][20]; //tipo, nome, numero righe, numero colonne

Una matrice si dichiara → tiponome, numero righe (composto da 200 elementi), numero colonne (ciascuno di 20 elementi)

Per calcolare quanto spazio dovrà essere allocato in memoria è sufficiente moltiplicare il numero di righe per il numero di colonne per il numero di byte occupati dal tipo della matrice (in questo caso int)

Ricordiamo che:

  • il tipo int occupa 2 byte
  • il tipo float occupa 4 byte
  • il tipo char occupa 1 byte

Spazio allocazione in memoria = 200 * 2 * 20 = (numero righe) * (byte tipo int) * (numero colonne) = 8000 byte

corso [4][3] = 18; //Inserisco nella 5° riga e 4° colonna, il valore 18

corso [0][20] = 15; //Inserisce nella 2° riga e 1°colonna il valore 15 (perchè il massimo numero di colonne è 19)

Teoria: per vedere dove è stato messo un elemento in memoria → (base + ((indice riga * dimensione riga) + indice colonna) * dimensione tipo variabile.

base → numero dal quale la memoria è libera

corso [4][3] → è stato messo nella posizione (base + (4*20) + 3) * 2


Esempio: come assegnare il valore 0 a tutti gli elementi della matrice

Per conoscere il ciclo for, clicca qui.

#include <stdio.h>
int main()
{
int corso [200][20];
int i, j; //i scorre sulle righe, j scorre sulle colonne

for(i=0; i<200; i++)
	for(j=0; j<20; j++)
		corso[i][j] = 0; //così facendo riempiamo righe e colonne di 0
return 0;
}

Le parentesi possono NON essere messe perchè ogni corpo del ciclo for è composto da UNA sola istruzione.