Matrisdeklarationer

En "matrisdeklaration" namnger matrisen och anger typen av dess element. Den kan också definiera antalet element i matrisen. En variabel med matristyp anses vara en pekare till typen av matriselement.

Syntax

declaration:
declaration-specifiers init-declarator-list välja;

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

init-declarator:
declarator
declarator = initializer

declarator:
pointer väljadirect-declarator

direct-declarator:
direct-declarator [ constant-expression välja]

Eftersom constant-expression det är valfritt har syntaxen två formulär:

  • Det första formuläret definierar en matrisvariabel. Argumentet constant-expression inom hakparenteserna anger antalet element i matrisen. , constant-expressionom det finns, måste ha en integrerad typ och ett värde som är större än noll. Varje element har den typ som anges av type-specifier, som kan vara vilken typ som helst utom void. Ett matriselement kan inte vara en funktionstyp.

  • Det andra formuläret deklarerar en variabel som har definierats någon annanstans. Det utelämnar constant-expression argumentet inom hakparenteser, men inte hakparenteserna. Du kan bara använda det här formuläret om du tidigare har initierat matrisen, deklarerat den som en parameter eller deklarerat den som en referens till en matris som uttryckligen har definierats någon annanstans i programmet.

I båda formulären direct-declarator namnger du variabeln och kan ändra variabelns typ. Hakparenteserna ([ ]) som följer direct-declarator ändrar deklaratorn till en matristyp.

Typkvalificerare kan visas i deklarationen av ett objekt av matristyp, men kvalificerarna gäller för elementen i stället för själva matrisen.

Du kan deklarera en matris med matriser (en flerdimensionell matris) genom att följa matrisdeklaratorn med en lista över hakparenteserade konstanta uttryck i det här formuläret:

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

Var constant-expression och en inom hakparenteser definierar antalet element i en viss dimension: tvådimensionella matriser har två hakparenteserade uttryck, tredimensionella matriser har tre och så vidare. Du kan utelämna det första konstanta uttrycket om du har initierat matrisen, deklarerat den som en parameter eller deklarerat den som en referens till en matris som uttryckligen definierats någon annanstans i programmet.

Du kan definiera matriser med pekare till olika typer av objekt med hjälp av komplexa deklaratorer, enligt beskrivningen i Tolka mer komplexa deklaratorer.

Matriser lagras efter rad. Följande matris består till exempel av två rader med tre kolumner vardera:

char A[2][3];

De tre kolumnerna i den första raden lagras först, följt av de tre kolumnerna i den andra raden. Det innebär att den sista nedsänkta filen varierar snabbast.

Om du vill referera till ett enskilt element i en matris använder du ett nedsänkt uttryck enligt beskrivningen i Postfixoperatorer.

Exempel

De här exemplen illustrerar matrisdeklarationer:

float matrix[10][15];

Den tvådimensionella matrisen med namnet matrix har 150 element, var och en har float typ.

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

Det här exemplet är en deklaration av en matris med strukturer. Den här matrisen har 100 element. varje element är en struktur som innehåller två medlemmar.

extern char *name[];

Den här instruktionen deklarerar typen och namnet på en matris med pekare till char. Den faktiska definitionen av name inträffar någon annanstans.

Microsoft-specifik

Den typ av heltal som krävs för att lagra den maximala storleken på en matris är storleken på size_t.

Avsluta Microsoft Specifik

Se även

Deklaratorer och variabeldeklarationer