Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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-expressioninom 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 avtype-specifier, som kan vara vilken typ som helst utomvoid. Ett matriselement kan inte vara en funktionstyp.Det andra formuläret deklarerar en variabel som har definierats någon annanstans. Det utelämnar
constant-expressionargumentet 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-specifierdeclarator[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