C++ Gli Array

Scritto da ambrix on . Postato in Corsi Programmazione, NotInHome

logo programmazione c++

Lezione#05 Benvenuti al corso C++ in 11 Passi, in questa lezione vedremo come manipolare gli Array.

Un array è una variabile contenente un riferimento ad un’area di memoria, al cui interno vi sono dei dati. Gli elementi di un array hanno una posizione all’interno dello stesso, che è definita come indice, in particolare il primo elemento ha un indice che parte dal valore 0 –>  zero-based index . In C++ gli array sono sequenziali e possono contenere elementi appartenenti ad uno stesso tipo.

Pertanto, assodato che un array è una variabile speciale che contiene diversi valori di uno stesso tipo, passiamo ad un primo esempio.

#include <iostream>
using namespace std;

int main(){
    string names[10];
    int numbers[100];
}

Abbiamo dichiarato un array (names) di 10 elementi di tipo stringa e un array (numbers) di 100 interi. Pertanto i nostri array avranno tutti elementi del tipo dichiarato al proprio interno. Passiamo al secondo esempio:

#include <iostream>
using namespace std;

int main(){
    int numbers[6] = {1, 2, 3, 4, 5, 6, 7};
    string names[] = {"ET", "Elliot", "Mr. Robot"};
}

In questo caso entrambi gli array sono stati dichiarati nonché inizializzati! Si noti che nel caso del secondo array, names, esso viene inizializzato senza dargli la dimensione: in tal caso assumerà una lunghezza pari al numero di elementi che gli assegnate.

Vediamo quindi come visualizzare a schermo gli elementi di un array:

#include <iostream>
using namespace std;

int main(){
    string names[3];
    names[0] = "ET";
    names[1] = "Elliot";
    names[2] = "Mr. Robot";
    cout << names[1];
}

Mr. Robot

Come precisato all’inizio di questa lezione, un array è zero-based e quindi si inizia a contare dalla posizione 0. All’interno delle parentesi quadre gli passiamo l’indice dell’elemento a cui vogliamo accedere. In altre parole l’indice è la posizione dell’elemento all’interno dell’array.

In C++ gli array sono modificabili:

#include <iostream>
using namespace std;

int main(){
    string names[3] = {"ET", "Elliot", "Mr. Robot"};
    names[2] = "Gertie";
    cout << names[2];
}

Gertie

Per modificare un valore, basta accedere all’elemento specificandone l’indice e la nuova assegnazione.

Un array monodimensionale è anche detto VETTORE. Pertanto un vettore è un array 1D, mentre una MATRICE è un array 2D. Esistono anche array a n dimensioni, che vengono chiamati TENSORI.

Ragioniamo ora sulle dimensioni in memoria della variabili. La funzione sizeof() è utile per restituire il numero di bytes di un array o, se vogliamo, il numero di elementi contenuti in esso.

#include <iostream>
using namespace std;

int main(){
    int n[5] = {46, 8, 10, 28, 6};
    int n_size = sizeof(n);
    int ele_size = sizeof(n[0]);
    int elements = n_size / ele_size;
    cout << "dimensione di n: " << n_size << endl;
    cout << "dimensione singolo elemento di n: " << ele_size << endl;
    cout << "numero di elementi di n: " << elements;
}

dimensione di n: 20
dimensione singolo elemento di n: 4
numero di elementi di n: 5

Wow! Un po’ di calcoli finalmente. Allora, la dimensione dell’array n risulta di 20 bytes, questo perchè ogni intero pesa 4 bytes. Infatti sizeof(n[0]) ci dà anche la dimensione di un singolo elemento. Dividendo la dimensione totale dell’array per la dimensione del singolo elemento, otteniamo il numero di elementi.

Vediamo ora cosa accade se proviamo a fare altre operazioni che riguardano la dimensione dell’array:

#include <iostream>
using namespace std;

int main(){
    string n[3] = {1, 10, 100};
    n[3] = 1000;
    cout << n[3];
}

1000

In quest’ultimo esempio, è evidente l’errore di indicizzazione, nonostante si riesca a stampare a video il quarto elemento del vettore n. Infatti c’è da sottolineare che, anche se sintatticamente corretto è sconsigliato operare in questo modo per una questione di allocazione della memoria: potrebbe esservi perdita di dati (discuteremo di questi dettagli nella lezione dedicata ai puntatori).

In ultima analisi vediamo come lavorare con le matrici:

#include <iostream>
using namespace std;

int main(){
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    cout << matrix[1][1];

}

5

Una matrice è un array bidimensionale, la dichiariamo inserendo tra parantesi quadre il numero di righe e il numero di colonne della matrice. Pertanto matrix[0][2] corrisponderà al numero 3, mentre matrix[1][0] conterrà il numero 4 e così via.

Ritorna alla precedente <– []–> Vai alla successiva

Tags:

Per Richieste, Avvisi e Lasciti Ereditari

Disclaimer

I contenuti di questo Blog (testi, immagini, foto, etc.) sono di mia creazione, tranne nei casi dove espressamente indicato.