Sdílet prostřednictvím


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-specifiersinit-declarator-listvolit ;

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

init-declarator:
declarator
declarator = initializer

declarator:
pointervolit direct-declarator

direct-declarator:
direct-declarator [ constant-expressionvolit ]

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. Pokud constant-expressionexistuje, 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ýjimkou void. 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-specifierdeclarator [ 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

Viz také

Deklarátor a deklarace proměnné