Dichiarazioni di matrice

Una "dichiarazione di matrice" denomina la matrice e specifica il tipo dei relativi elementi. Può inoltre definire il numero di elementi presenti nella matrice. Una variabile con tipo matrice è considerata un puntatore al tipo di elementi della matrice.

Sintassi

declaration:
declaration-specifiersinit-declarator-listoptare ;

init-declarator-list:
init-declarator
init-declarator-list , init-declarator

init-declarator:
declarator
declarator = initializer

declarator:
pointeroptare direct-declarator

direct-declarator:
direct-declarator [ constant-expressionoptare ]

Poiché constant-expression è facoltativo, la sintassi ha due forme:

  • Il primo formato definisce una variabile di matrice. L'argomento constant-expression all'interno delle parentesi quadre specifica il numero di elementi nella matrice. L'oggetto constant-expression, se presente, deve avere un tipo integrale e un valore maggiore di zero. Ogni elemento ha il tipo specificato da type-specifier, che può essere qualsiasi tipo tranne void. Un elemento matrice non può essere un tipo di funzione.

  • Il secondo formato dichiara una variabile definita altrove. Omette l'argomento constant-expression tra parentesi quadre, ma non le parentesi quadre. È possibile usare questo modulo solo se la matrice è stata inizializzata in precedenza, dichiarata come parametro o dichiarata come riferimento a una matrice definita in modo esplicito altrove nel programma.

In entrambi i moduli assegna direct-declarator un nome alla variabile e può modificare il tipo della variabile. Le parentesi quadre ([ ]) che seguono direct-declarator modificano il dichiaratore in un tipo di matrice.

I qualificatori di tipo possono essere visualizzati nella dichiarazione di un oggetto di tipo matrice, ma i qualificatori vengono applicati agli elementi anziché alla matrice stessa.

È possibile dichiarare una matrice di matrici (una matrice "multidimensionale") facendo seguire al dichiaratore della matrice un elenco di espressioni costanti tra parentesi nel seguente formato:

type-specifierdeclarator [ constant-expression ] [ constant-expression ] ...

Ognuno constant-expression tra parentesi quadre definisce il numero di elementi in una determinata dimensione: le matrici bidimensionali hanno due espressioni tra parentesi quadre, matrici tridimensionali hanno tre e così via. È possibile omettere la prima espressione costante se la matrice è stata inizializzata, dichiarata come parametro o dichiarata come riferimento a una matrice definita in modo esplicito altrove nel programma.

È possibile definire le matrici di puntatori in diversi tipi di oggetti usando dichiaratori complessi, come descritto in Interpretazione di più dichiaratori complessi.

Le matrici vengono archiviate in base alla riga. Ad esempio, la seguente matrice è composta da due righe con tre colonne ciascuna:

char A[2][3];

Le tre colonne della prima riga vengono archiviate per prime, seguite dalle tre colonne della seconda riga. Significa che l'ultimo pedice varia più rapidamente.

Per fare riferimento a un singolo elemento di matrice usare un'espressione di indice, come descritto nell'argomento Operatori di suffisso.

Esempi

In questi esempi sono illustrate le dichiarazioni di matrici:

float matrix[10][15];

La matrice bidimensionale denominata matrix ha 150 elementi, ognuno con float tipo .

struct {
    float x, y;
} complex[100];

Questo esempio è una dichiarazione di una matrice di strutture. Questa matrice contiene 100 elementi; ogni elemento è una struttura contenente due membri.

extern char *name[];

Questa istruzione dichiara il tipo e il nome di una matrice di puntatori a char. L'effettiva definizione di name viene eseguita altrove.

Sezione specifica Microsoft

Il tipo di integer necessario per contenere la dimensione massima di una matrice è la dimensione di size_t.

Fine sezione specifica Microsoft

Vedi anche

Dichiaratori e dichiarazioni di variabili