Attenzione: questa pagina è stata aggiornata , vedere tipi_di_dato_strutturato_array

Array

Il tipo array è un'eredità del linguaggio C. Mentre un tipo come int è detto tipo semplice, in quanto può contenere un solo valore. Un tipo array invece è detto “tipo strutturato”, perché composto da più elementi. In italiano vengono chiamati anche vettori, ma non per questo devono essere confusi con il tipo std::vector.

  • Un array è una struttura che raggruppa tanti elementi, tutti di uno stesso tipo.
  • Per indicare la posizione di un elemento dell'array si può usare un indice int o char.
  • Se un vettore è di 9 elementi, l'indice va da 0 a 8
51.cpp
// questo programma è stato scritto da Fabio
// crea un array, lo inizializza e lo visualizza
#include <iostream>
int main()
{
  int vettore[9]={7,7,7,7,7,7,5,3,1};
  for (int indice=0; indice<9; indice++)
    std::cout << vettore[indice] << ' ' ; //notare la sintassi delle parentesi quadrate
  std::cout << std::endl;
  return 0;
}

I vettori sono utili quando devo gestire grandi quantità di dati dello stesso tipo. Si può accedere, leggere e modificare un singolo elemento del vettore usando l'indice, usando le parentesi quadrate.

Grazie alla presenza dell'indice le operazioni sui vettori possono essere automatizzate, ad esempio, percorrendo l'array usando un'istruzione di iterazione come for.

52.cpp
// questo programma è stato scritto da Fabio
// crea un array, lo inizializza e ne visualizza la somma di tutti gli elementi
#include <iostream>
int main()
{
  int totale=0;
  int vettore[9]={7,7,7,7,7,7,5,3,1};
  for (int indice=0; indice<9; indice++) // l'indice si può dichiarare dentro il for (solo quando serve)
    totale = totale + vettore[indice] ; //notare la sintassi delle parentesi quadrate
  std::cout << totale << std::endl;
  return 0;
}

Rivedere il precedente esempio, immaginando di dover visualizzare e sommare 90 valori interi invece di 9. Come potrebbe essere risolto un problema del genere senza l'uso dei vettori?

  • Il numero degli elementi deve essere stabilito al momento della compilazione.
    • solo per le variabili globali si può stabilire anche run time.
  • Il linguaggio non effettua controlli sul superamento dei limiti di un array

Le variabili strutturate di tipo array derivano dal linguaggio C e sono scomode da usare perché, ad esempio, non c'è nessun controllo del superamento della posizione dell'ultimo elemento. Quindi, nel C++, al loro posto, in generale, è consigliabile usare degli oggetti chiamati std::vector

Si vedrà presto il legame tra questi due argomenti (vedi puntatori_a_qualcosa all'interno dell'argomento principale gestione della memoria )

Come è ben noto, in C++ per memorizzare una parola si usa il tipo std::string. In C gli array erano utilizzati anche per contenere una sequenza di caratteri, ma la sequenza deve terminare con il valore \0 (Zero, da non confondere con il valore numerico intero Zero o con il carattere ASCII '0').

Esiste una funzione che converte le variabili C++ std::string in array in stile C.

 
std::string variabileString = "ciao";
char a1[50] = c_str(variabileString);

Esempio in cui viene usata proprio questa funzione: file

  • appunti3s/array.txt
  • Last modified: 2019/06/29 15:38
  • by profpro