Dichiarazioni di matriceArray Declarations

Una "dichiarazione di matrice" denomina la matrice e specifica il tipo dei relativi elementi.An "array declaration" names the array and specifies the type of its elements. Può inoltre definire il numero di elementi presenti nella matrice.It can also define the number of elements in the array. Una variabile con tipo matrice è considerata un puntatore al tipo di elementi della matrice.A variable with array type is considered a pointer to the type of the array elements.

SintassiSyntax

declaration:declaration:
declaration-specifiers init-declarator-list opt;declaration-specifiers init-declarator-list opt;

init-declarator-list:init-declarator-list:
init-declaratorinit-declarator

init-declarator-list , init-declaratorinit-declarator-list , init-declarator

init-declarator:init-declarator:
declaratordeclarator

declarator = initializerdeclarator = initializer

declarator:declarator:
pointer optdirect-declaratorpointer optdirect-declarator

direct-declarator:direct-declarator:
direct-declarator [ constant-expression opz]direct-declarator [ constant-expression opt]

Dato che constant-expression è un elemento facoltativo, la sintassi presenta due formati:Because constant-expression is optional, the syntax has two forms:

  • Il primo formato definisce una variabile di matrice.The first form defines an array variable. L'argomento constant-expression all'interno delle parentesi specifica il numero di elementi presenti nella matrice.The constant-expression argument within the brackets specifies the number of elements in the array. constant-expression, se presente, deve avere il tipo integrale e un valore superiore a zero.The constant-expression, if present, must have integral type, and a value larger than zero. Ogni elemento presenta il tipo specificato da type-specifier, che può essere qualsiasi tipo tranne void.Each element has the type given by type-specifier, which can be any type except void. Un elemento di matrice non può essere un tipo di funzione.An array element cannot be a function type.

  • Il secondo formato dichiara una variabile definita altrove.The second form declares a variable that has been defined elsewhere. Omette l'argomento constant-expression tra parentesi quadre, ma non le parentesi.It omits the constant-expression argument in brackets, but not the brackets. È possibile utilizzare questo formato solo se in precedenza la matrice è stata inizializzata, quindi è stata dichiarata come parametro o come riferimento a una matrice definita in modo esplicito in altre parti del programma.You can use this form only if you previously have initialized the array, declared it as a parameter, or declared it as a reference to an array explicitly defined elsewhere in the program.

    In entrambi i formati direct-declarator denomina la variabile e può modificare il tipo di variabile.In both forms, direct-declarator names the variable and can modify the variable's type. Le parentesi quadre ([ ]) che seguono direct-declarator modificano il dichiaratore in un tipo di matrice.The brackets ([ ]) following direct-declarator modify the declarator to an array type.

    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.Type qualifiers can appear in the declaration of an object of array type, but the qualifiers apply to the elements rather than the array itself.

    È 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:You can declare an array of arrays (a "multidimensional" array) by following the array declarator with a list of bracketed constant expressions in this form:


type-specifier  
declarator [constant-expression] [constant-expression] ...  

Ogni constant-expression tra parentesi quadre definisce il numero di elementi di una data dimensione: le matrici bidimensionali dispongono di due espressioni tra parentesi quadre, le matrici tridimensionali ne hanno tre e così via.Each constant-expression in brackets defines the number of elements in a given dimension: two-dimensional arrays have two bracketed expressions, three-dimensional arrays have three, and so on. È possibile omettere la prima espressione costante se in precedenza la matrice è stata inizializzata, quindi è stata dichiarata come parametro o come riferimento a una matrice definita in modo esplicito in altre parti del programma.You can omit the first constant expression if you have initialized the array, declared it as a parameter, or declared it as a reference to an array explicitly defined elsewhere in the program.

È possibile definire le matrici di puntatori in diversi tipi di oggetti usando dichiaratori complessi, come descritto in Interpretazione di più dichiaratori complessi.You can define arrays of pointers to various types of objects by using complex declarators, as described in Interpreting More Complex Declarators.

Le matrici vengono archiviate in base alla riga.Arrays are stored by row. Ad esempio, la seguente matrice è composta da due righe con tre colonne ciascuna:For example, the following array consists of two rows with three columns each:

char A[2][3];  

Le tre colonne della prima riga vengono archiviate per prime, seguite dalle tre colonne della seconda riga.The three columns of the first row are stored first, followed by the three columns of the second row. Ciò significa che l'ultimo indice varia più rapidamente.This means that the last subscript varies most quickly.

Per fare riferimento a un singolo elemento di matrice usare un'espressione di indice, come descritto nell'argomento Operatori di suffisso.To refer to an individual element of an array, use a subscript expression, as described in Postfix Operators.

EsempiExamples

In questi esempi sono illustrate le dichiarazioni di matrici:These examples illustrate array declarations:

float matrix[10][15];  

La matrice bidimensionale denominata matrix dispone di 150 elementi, ognuno di tipo float.The two-dimensional array named matrix has 150 elements, each having float type.

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

Si tratta di una dichiarazione di una matrice di strutture.This is a declaration of an array of structures. Questa matrice contiene 100 elementi; ogni elemento è una struttura contenente due membri.This array has 100 elements; each element is a structure containing two members.

extern char *name[];  

Questa istruzione dichiara il tipo e il nome di una matrice di puntatori a char.This statement declares the type and name of an array of pointers to char. L'effettiva definizione di name viene eseguita altrove.The actual definition of name occurs elsewhere.

Sezione specifica MicrosoftMicrosoft Specific

Il tipo di Integer richiesto per contenere la dimensione massima di una matrice è la dimensione size_t.The type of integer required to hold the maximum size of an array is the size of size_t. Definito nel file di intestazione STDDEF.H, size_t è unsigned int con intervallo da 0x00000000 a 0x7CFFFFFF.Defined in the header file STDDEF.H, size_t is an unsigned int with the range 0x00000000 to 0x7CFFFFFF.

Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Dichiaratori e dichiarazioni di variabiliDeclarators and Variable Declarations