Deklarace pole
Deklarace pole pojmenuje pole a určuje typ jeho prvků. Může také definovat počet prvků v poli. Proměnná s typem pole je považována za ukazatel na typ prvků pole.
Syntaxe
declaration
:
declaration-specifiers
init-declarator-list
volit ;
init-declarator-list
:
init-declarator
init-declarator-list
,
init-declarator
init-declarator
:
declarator
declarator
=
initializer
declarator
:
pointer
volit direct-declarator
direct-declarator
:
direct-declarator
[
constant-expression
volit ]
Protože constant-expression
je volitelná, syntaxe má dvě formy:
První formulář definuje proměnnou pole. Argument
constant-expression
v závorkách určuje počet prvků v matici. Pokudconstant-expression
existuje, musí mít celočíselný typ a hodnotu větší než nula. Každý prvek má typ zadanýtype-specifier
, který může být libovolný typ s výjimkouvoid
. Prvek pole nemůže být typem funkce.Druhý formulář deklaruje proměnnou, která byla definována jinde.
constant-expression
Vynechá argument v hranatých závorkách, ale ne hranaté závorky. Tento formulář můžete použít pouze v případě, že jste dříve inicializovali pole, deklarovali ho jako parametr nebo ho deklarovali jako odkaz na pole, které je explicitně definováno jinde v programu.
V obou formách direct-declarator
pojmenujte proměnnou a můžete změnit typ proměnné. Hranaté závorky ([ ]
) následující direct-declarator
upravují deklarátor na typ pole.
Kvalifikátory typu se mohou objevit v deklaraci objektu typu pole, ale kvalifikátory se vztahují na prvky, nikoli na samotné pole.
Pole polí (multidimenzionální pole) můžete deklarovat pomocí deklarátoru pole se seznamem závorkových konstantních výrazů v tomto formátu:
type-specifier
declarator
[
constant-expression
]
[
constant-expression
]
...
Každý constant-expression
v hranatých závorkách definuje počet prvků v dané dimenzi: dvojrozměrná pole mají dva závorky výrazy, trojrozměrná pole mají tři atd. První konstantní výraz můžete vynechat, pokud jste inicializovali pole, deklarovali ho jako parametr nebo ho deklarovali jako odkaz na pole explicitně definované jinde v programu.
Pole ukazatelů na různé typy objektů můžete definovat pomocí složitých deklarátorů, jak je popsáno v tématu Interpretace složitějších deklarátorů.
Pole jsou uložená po řádcích. Například následující pole se skládá ze dvou řádků se třemi sloupci:
char A[2][3];
Tři sloupce prvního řádku jsou uloženy jako první, za nimi následují tři sloupce druhého řádku. To znamená, že poslední dolní index se liší nejrychleji.
Chcete-li odkazovat na jednotlivé prvky pole, použijte dolní index výraz, jak je popsáno v postfix Operators.
Příklady
Tyto příklady znázorňují deklarace polí:
float matrix[10][15];
Dvourozměrné pole s názvem matrix
má 150 prvků, z nichž každý má float
typ.
struct {
float x, y;
} complex[100];
Tento příklad je deklarace pole struktur. Toto pole má 100 prvků; každý prvek je struktura obsahující dva členy.
extern char *name[];
Tento příkaz deklaruje typ a název pole ukazatelů na char
. Skutečná definice name
se vyskytuje jinde.
Specifické pro Microsoft
Typ celého čísla vyžadovaného k uložení maximální velikosti pole je velikost size_t
.
END Microsoft Specific