Come creare un array a 2 dimensioni utilizzando Malloc nella programmazione C

Come creare un array a 2 dimensioni utilizzando Malloc nella programmazione C

La funzione Malloc () viene utilizzata nella programmazione C per archiviare i dati nel heap che è archiviazione di memoria dinamica. È utilizzato principalmente per la dichiarazione dinamica degli array ed essere utilizzato anche per la creazione di array bidimensionali. Gli array bidimensionali vengono utilizzati per tracciare i valori nella forma tabulare con colonne e righe.

In questo articolo, impareremo a creare un array bidimensionale usando la funzione Malloc () nella programmazione C.

Cos'è una funzione Malloc () nella programmazione C

In alcuni programmi specifici, spesso non possiamo prevedere le dimensioni di un array. Se assegniamo i valori all'array da soli, non può essere modificato durante l'esecuzione. Ciò creerà problemi, o la memoria diventerà bassa per l'array o l'array occuperà meno spazio per sprecare la memoria in modo da evitarlo, si consiglia di assegnare array dinamicamente.

Nella programmazione C, per l'allocazione della memoria dinamica, vengono utilizzate diverse funzioni. Uno di questi è la funzione Malloc (); Invia una richiesta al heap per un blocco specifico di memoria e se il heap ha lo spazio, risponde allocando il blocco richiesto di memoria a Malloc ().

Malloc () occuperà lo spazio del blocco di memoria assegnato in base alla necessità di un programma eseguito e dopo l'esecuzione dopo la riuscita, questo spazio può essere reso gratuito utilizzando la funzione Free ().

Come creare l'array bidimensionale utilizzando la funzione Malloc () nella programmazione C

Prima della creazione, considera la figura seguente per una migliore comprensione di come funziona l'array bidimensionale.

Nella figura sopra, possiamo capire che in un array bidimensionale, prima gli elementi verranno fissati nella prima casella della colonna dopo che questa riga corrispondente verrà riempita, quindi la seconda riga della colonna e continua L'intero array viene riempito come i primi elementi verranno posizionati in x [0] [0 [, quindi x [0] [1], quindi [0] [2], quindi x [0] [1], [1] [1] [1] [ 0], e poi così via.

Considereremo il seguente esempio di base della creazione di un array bidimensionale usando il malloc () nella programmazione C. Abbiamo creato un file di testo, cfile.C e digitare il seguente script in esso:

#includere
#includere
int main ()
int riga = 5, col = 4;
int * a = (int *) malloc (riga * col * sizeof (int));
int i, j;
per (i = 0; i < row; i++)
per (j = 0; j < col; j++)
*(a + i*col + j) = i + j;
printf ("Gli elementi dell'array sono: \ n");
per (i = 0; i < row; i++)
per (j = 0; j < col; j++)
printf ("%d", *(a + i *col + j));

printf ("\ n");

libero (a);
restituzione 0;

Per compilare il programma di cui sopra, useremo il compilatore GCC:

$ GCC CFILE.c -o cfile

Eseguire il CFILE, che è il file compilato di cfile.c e visualizzare l'output:

$ ./cfile

Nel codice sopra, abbiamo incluso le librerie di stdlib.H (per l'allocazione della memoria dinamica) e STDIO.H (per l'input e l'output), quindi abbiamo dichiarato la riga delle variabili, colonna, i e j. Dopo la dichiarazione, abbiamo chiamato Malloc () per assegnare la memoria in base ai valori di "riga" e "colonna". Una volta che la memoria è stata assegnata, abbiamo semplicemente usato i due anelli nidificati per salvare i valori nell'array, quindi usando la stampa () nel ciclo nidificato abbiamo visualizzato i valori. Alla fine, abbiamo usato il Free () per svuotare lo spazio occupato assegnato sul mucchio di Malloc ().

Conclusione

Gli array bidimensionali sono simili agli array unidimensionali, l'unica differenza tra le matrici 1D e 2D è; Gli array 2D archiviano i dati in forma tabulare e l'array 1D memorizza i dati sotto forma di righe. Gli array sono le basi delle strutture di dati e possono archiviare una grande quantità di dati dello stesso tipo di dati. In questo articolo, abbiamo spiegato la creazione dell'array bidimensionale nella memoria dinamica chiamando la funzione Malloc ().