Skip to content

Files

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Latest commit

dd192aa · Oct 6, 2022

History

History
110 lines (81 loc) · 3.42 KB

File metadata and controls

110 lines (81 loc) · 3.42 KB
title categories subCategories
array
Variables
Data Types

Arrays

Descrizione

Un array è un insieme di variabili a cui si accede con un indice. Gli array, nel linguaggio di programmazione C su cui si basa Arduino, possono essere complessi, ma l’utilizzo di semplici array è relativamente facile.

Creazione (Dichiarazione) di un Array

Tutti i metodi che seguono sono modi validi per creare (dichiarare) un array.

  int myInts[6];
  int myPins[] = {2, 4, 8, 3, 6};
  int mySensVals[6] = {2, 4, -8, 3, 2};
  char message[5] = "ciao";

Puoi dichiarare un array senza inizializzarlo, come in myInts.
In myPins dichiariamo un array senza sceglierne esplicitamente la dimensione. Il compilatore conta gli elementi e crea un array della dimensione appropriata.
Infine, puoi sia inizializzare e dimensionare l’array, come in mySensVals. Nota che quando dichiari un array di tipo char, è richiesto un elemento in più rispetto all’inizializzazione, per contenere il carattere null (richiesto).

Accedere a un Array

Gli array hanno indice che parte da zero, cioè, in riferimento alle inizializzazioni degli array precedenti, il primo elemento dell’array è all’indice 0, perciò

mySensVals[0] == 2, mySensVals[1] == 4, e così via.

Significa anche che in un array con dieci elementi, l’indice nove è l’ultimo elemento. Quindi:

int myArray[10]={9,3,2,4,3,2,7,8,9,11};
     // myArray[9]    contiene 11
     // myArray[10]   non è valido e contiene un'informazione casuale (un altro indirizzo in memoria)

Per questo motivo dovresti fare attenzione quando accedi agli array. Accedere oltre la fine di un array (utilizzando un indice maggiore della dimensione dell’array dichiarato - 1) significa leggere dalla memoria che viene usata per altri scopi. La lettura da queste posizioni probabilmente non servirà a molto se non per fornire dati non validi. Scrivere in posizioni di memoria casuali è sicuramente una pessima idea e spesso può portare a risultati infelici come arresti anomali o malfunzionamenti del programma. Questo può generare anche bug difficili da rintracciare.

A differenza di BASIC o JAVA, il compilatore C non controlla se l’accesso all’array rientra nei limiti della dimensione dell’array che hai dichiarato.

Per assegnare un valore a un array:

mySensVals[0] = 10;

Per ottenere un valore da un array:

x = mySensVals[4];

Array e cicli FOR

Gli array sono spesso manipolati all’interno di cicli for, dove il contatore è usato come indice per ciascun elemento dell’array. Per esempio, per visualizzare gli elementi di un array nella porta seriale, puoi scrivere qualcosa come:

int i;
for (i = 0; i < 5; i = i + 1) {
  Serial.println(myPins[i]);
}

Codice di esempio

Per un programma completo che mostri l’uso degli array, guarda (Knight Rider example) nel (Tutorial).

Vedi anche