Ciao e Benvenuto.
In questa conferenza voglio parlare sugli array multidimensionali.
Fino a questo punto, se lo hai fatto pensato a un array, hai appena detto
che un array è una variabile che può memorizzare molti tipi di dati.
Può diventare più complicato di così.
Puoi averne praticamente molti dimensioni di un array.
Quindi, se hai solo un array lineare che è ciò di cui abbiamo discusso finora, che è
chiamata una singola dimensione.
E sappiamo che è un singolo dimensione perché ha
solo una parentesi con una dimensione.
Il linguaggio c consente gli array di qualsiasi dimensione da multare.
Quindi questo è una specie di pensiero come un file array annidato, un array di un array.
Quindi array bidimensionali sono i più comuni.
Ma puoi davvero farlo array tridimensionali, array quadridimensionali,
array a cinque dimensioni, ma non ci sono molti casi
d'uso per 3 4 e 5.
Davvero, o lo farai avere un array unidimensionale che
usi nel tuo programma o matrice bidimensionale.
gli array bidimensionali sono comuni perché rappresentano
essenzialmente righe e colonne in un foglio di lavoro, è così
che puoi visualizzarlo o una matrice o una tabella.
È un array bidimensionale, hai righe e hai colonne.
Quindi puoi memorizzare più dati di una
matrice unidimensionale specificando le dimensioni.
Ma è molto applicabile perché sembra una matrice.
E ci sono applicazioni che potresti scrivere che ha questo concetto di
matrice, in particolare un'applicazione matematica sarebbe più
rilevante qui.
Ma puoi usare per fare bidimensionale array per molte cose diverse.
Un esempio è una matrice.
Ma ancora, visualizzalo come un tavolo.
Gli array bidimensionali sono dichiarato nello stesso modo in cui
lo è un array unidimensionale.
L'unica differenza sei tu ora avere un altro set di parentesi.
Quindi in questo esempio, stiamo dichiarando una matrice denominata matrice di tipo
int che ha 4 righe e 5 colonne.
Ciò significa che puoi memorizzare 20 elementi all'interno di quella matrice bidimensionale.
Quindi dovresti sapere come ciascuno dimensione è specificata con la
propria coppia di parentesi quadre.
è così che puoi facilmente individuare quante dimensioni ha un array.
Se hai 3 parentesi lì, quello sarebbe una matrice tridimensionale.
Se ne hai 4, sarebbero quattro.
Questo ha 2 quindi è 2.
E fino a prima le lezioni ne avevano solo una, quindi sapevamo
che era un'unica dimensione.
Quindi guarda le parentesi, prestare attenzione a questo.
Ancora 4 righe, 5 colonne, totale di 20 elementi.
Per inizializzare un array bidimensionale, sarà inizializzato nello stesso modo di
un unidimensionale array, lo stesso tipo di sintassi, aggiungerai
solo altro.
Quindi quando elenchi gli elementi per l'inizializzazione, i valori verranno
elencati per riga.
E la differenza qui è quella quando
metti i valori iniziali per ogni riga, lo farai tra parentesi graffe, parentesi graffe
e poi racchiuderai tutte le righe tra parentesi graffe.
Quindi guarderà qualcosa come questo.
Se creiamo una matrice di numeri, che è di 2 dimensioni,
3 righe e 4 colonne e lo vogliamo inizializzalo, tutto quello che
devi fare è inserire tra parentesi graffe il file l'intera matrice e quindi aggiungere parentesi graffe
nidificate interne per ogni riga.
Quindi qui stiamo inizializzando i valori 0 sub-0 a 10, 0 sub-1 a 20, 0 sub-2 a 30
e 0 sub-3 a 40.
Ed è così che accedi anche array multidimensionali.
Puoi accedervi con la riga nella colonna.
Devi solo ricordare che è basato su 0.
Quindi la mano in alto a sinistra che sarebbe la riga 1, la colonna 1 sarebbe 00 e sarebbe
uguale a 10.
La colonna 2 della riga 1 sarebbe uguale a
20, ma accederai come numeri 0 sub-1.
Perché il primo array contiene 3 righe a cui si accede è il numero specificato per il numero di riga
e quindi il numero di colonna è la successiva
specifica per accedere all'array.
Ma l'individualizzazione è carina semplice, basta separare le
cose dai commenti con le parentesi.
E accedendovi, avresti accesso è proprio come se si accede a un array normale tranne che
ora si sta accedendo questo concetto di una riga in una colonna.
Quindi l'uso delle coppie interne di le parentesi graffe sono in realtà facoltative, ma
dovresti usarle per la leggibilità.
Se non hai fornito quelle parentesi graffe, potresti
effettivamente fornire solo 10 20 30 40 15 25 35, tutto giusto consecutivamente, ma è molto difficile visualizzare ciò
che stai inizializzando.
Come programmatore, la leggibilità è molto, molto importante perché aumenta la qualità
del codice è più facile mantenere il codice.
Quando guardo questo proprio qui, Posso facilmente identificare, soprattutto con
i commenti, quello che sono inizializzazione su, quali valori e su quali
righe verranno inizializzate.
Se lo avessi come una singola riga solo numeri consecutivi, mi
sarei perso molto velocemente.
Quindi, anche se le parentesi interne non sono necessari, usali.
Come con una matrice unidimensionale, non è necessario
inizializzare l'intero array.
Puoi solo inizializzare alcune aree.
Quindi in questo esempio, siamo creazione di array bidimensionali con
4 righe e 5 colonne.
Stiamo solo inizializzando il file primi 3 elementi di ogni riga.
Quindi riga 1 colonna 1 è 10, riga 1 colonna 2 è 5 e riga 1 colonna 3 è negativo 3
e lo stesso per la seconda
colonna e così via 900 32 31 008.
Per quelli che non abbiamo impostato il quarto e il quinto
valore di ogni riga, quelli stanno effettivamente andando da impostare automaticamente a 0 perché li
abbiamo lasciati fuori.
E in questo caso, in realtà devono fornire le
parentesi graffe, quelle interne.
Perché qui se lo facessimo esso, l'inizializzazione
sarebbe tutta sbagliata.
Perché se non lo avessi le parentesi graffe,
lo farebbe solo consecutivamente.
Quindi quello che succederebbe è
questo inizializzerebbe effettivamente i primi 12 elementi.
Quindi inizializzerebbe tutto il file elementi nella prima riga, tutti gli elementi nella seconda
e poi i primi 2 elementi nella terza riga e
poi il resto degli elementi nella terza riga, il resto degli
elementi nella quarta riga sarebbe 0.
Ancora una volta, questo è un bidimensionale matrice di 4 righe e 5 colonne.
Li farebbe solo consecutivamente.
Quindi non dimenticare le parentesi graffe se sei se
vuoi solo specificare alcuni elementi di inizializzazione.
Puoi anche farlo inizializzatori designati.
Ricorda, questo è il concetto C99.
È opzionale in C11 dove è possibile
specificare indici specifici da inizializzare.
Quindi puoi usare i pedici nel file elenco di inizializzazione, proprio come in
un array monodimensionale, se lo desideri per eseguire un inizializzatore designato, dovresti semplicemente
fare qualcosa di simile.
Quindi qui stiamo dichiarando la nostra matrice matrice di 4 righe e 3 colonne, ma in realtà stiamo specificando
che 0 0 è uguale a 1, 1 1 è uguale a 5 e 2
2 è uguale a 9.
Quindi, quando diciamo di nuovo 2 2, cosa stiamo dicendo che è la riga 2 che in realtà è
la riga 3 perché iniziamo da 0, colonna 2 che in realtà è la colonna 3.
Di nuovo, visualizza questo come una tabella o un foglio di lavoro.
E l'accesso agli elementi inizia nell'angolo in alto a sinistra.
Ma se capisci che il file 4 rappresenta le righe e
il 3 rappresenta le colonne, è abbastanza intuitivo dopo.
Quindi quello che sta facendo è lo è inizializzando i 3 elementi
indicati della matrice su valori specificati.
Ma cosa dovresti notare qui è la sintassi.
Tutti i valori non specificati qui saranno 0 per impostazione predefinita.
Quindi questo sta solo andando per inizializzare 3 valori.
Ogni insieme di valori che tu inizializzare saranno gli elementi
in una riga tra parentesi graffe.
E poi l'intera inizializzazione va tra un altro paio di parentesi graffe.
Quindi vedi che abbiamo il file parentesi graffe su quelle esterne
proprio come la normale inizializzazione e poi abbiamo le
parentesi per accedere all'array all'interno.
E poi abbiamo virgole a separa ogni riga e ogni set di valori di
riga è separato dal successivo impostato da una virgola.
Quindi i valori sono separati e anche gli indici di riga.
Ora solo perché l'abbiamo detto abbiamo 2 dimensioni e
ne abbiamo parlato; Puoi in realtà hanno molte altre dimensioni.
Tutto quello di cui ho parlato 2 dimensioni si applica anche
a 3 dimensioni 4 dimensioni 5 dimensioni.
Quindi, se volessi dichiarare un
file Matrice tridimensionale, lo faresti con 3 parentesi quadre.
Quindi ecco un array denominato box di tipo int di 10 20 e 30.
Potresti voler usare un file
matrice tridimensionale forse se stessi memorizzando valori xyz di qualche tipo, probabilmente non avrai bisogno di farlo.
Array tridimensionali e up non sono davvero comuni.
Come riepilogo, puoi visualizzare un file matrice unidimensionale come
riga di dati, riga singola, bidimensionale matrice come una tabella una matrice
o un foglio di calcolo, in modo tridimensionale array, puoi visualizzare come una pila di tabelle
di dati, quindi una pila di tabelle.
Se avevi bisogno di così tanti dati, sarà davvero difficile
accedervi e probabilmente creare confusione.
E chiunque lo stia mantenendo programma per un
array tridimensionale o superiore, probabilmente sta andando perdersi
cercando di capire cosa sta succedendo, ma puoi farlo di nuovo e se mai
avrai bisogno di scorrere uno di questi uno, due, array tridimensionali, probabilmente
utilizzerai un loop.
E più dimensioni hai nel ciclo, più cicli
annidati avrai.
Quindi, se vuoi elaborare un file array tridimensionale,
avrai 3 loop annidati.
E se vuoi elaborare un file array quadridimensionale,
avrai 4 loop annidati.
Quindi per quanto riguarda l'inizializzazione di un array è superiore a 2 dimensioni, ancora una volta,
ti applicherai lo stesso tipo di cosa, lo estenderai
un po '.
Quindi una matrice tridimensionale avrà 3 livelli
di parentesi graffe annidate con il livello interno contenente un set di valori
di inizializzazione per ogni riga, quindi sarebbe assomiglia a qualcosa di simile.
Qui abbiamo un'immagine tridimensionale array, 2 3 e 4, essenzialmente una pila di
tabelle di dati.
E il primo blocco di 3 file, stiamo
per inizializzare e il secondo blocco di 3 righe stiamo per inizializzare.
Quindi quello che sta dicendo è di nuovo primo blocco e secondo blocco perché non abbiamo inizializzato
il terzo e il quarto blocco, solo il primo
e il secondo.
Quindi abbiamo 4 blocchi e tu può pensare a ogni blocco una pila
di tabelle di dati, ciascuna blocco con righe e colonne.
Quindi il primo blocco sarà inizializzando solo le prime 3 righe, che è tutto ciò
che abbiamo sono 3 righe.
E poi parte il secondo blocco per inizializzare le 3 righe successive, ma il terzo
e il quarto blocco non verranno inizializzati.
Se vuoi inizializzare il file terzo
e quarto blocco, avresti più parentesi graffe interne, parentesi graffe e così via.
La stessa cosa vale però per il quelli che non si
inizializzano, verranno inizializzati a 0.
Ma ancora una volta, puoi vedere come diventa molto noioso e
anche molto difficile da seguire.
Quando vuoi elaborare gli elementi in un array dimensionale, ho
detto, userete i cicli annidati.
Di nuovo, corrisponderà direttamente al numero di dimensioni.
E ogni ciclo sta per iterare su una dimensione dell'array.
Quindi guarderà qualcosa come questo.
Questo è un esempio di a matrice tridimensionale.
Hai un anello esterno e quindi hai 2 anelli interni.
Il ciclo esterno sarà il file primo array esterno, quindi il ciclo esterno essenzialmente passerebbe attraverso le righe, la
seconda passerà per le colonne e la terza
si passerà attraverso i blocchi.
Di nuovo, cosa dovresti notare è wow, questo diventa
davvero peloso e davvero noioso, molto veloce.
Quindi cerca di evitare la tridimensionalità array quadridimensionali e non ne vedo
nemmeno molti usi casi per questo, uno e due sono
davvero tutto ciò che utilizzerai.
Ma comprendi il multidimensionale gli array sono una possibilità in c, un modo per memorizzare più dati
e accedervi lo stesso nome con molti elementi di dati. Grazie.