Megosztás:


Tömbdeklarációk

A tömb deklarációja nevet ad a tömbnek, és megadja az elemek típusát. A tömb elemeinek számát is meghatározhatja. A tömbtípusú változók a tömbelemek típusára mutató mutatónak minősülnek.

Szemantika

declaration:
declaration-specifiers init-declarator-list választ;

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

init-declarator:
declarator
declarator = initializer

declarator:
pointer választdirect-declarator

direct-declarator:
direct-declarator [ constant-expression választ]

Mivel constant-expression nem kötelező, a szintaxisnak két formája van:

  • Az első űrlap egy tömbváltozót határoz meg. A constant-expression zárójelek argumentuma a tömb elemeinek számát határozza meg. A constant-expression(ha van) típusnak integráltípussal és nullánál nagyobb értékkel kell rendelkeznie. Minden elemhez a megadott type-specifiertípus tartozik, amely a kivételével voidbármilyen típus lehet. A tömbelem nem lehet függvénytípus.

  • A második űrlap egy máshol definiált változót deklarál. Kihagyja az constant-expression argumentumot szögletes zárójelekben, a szögletes zárójelek közül azonban nem. Ezt az űrlapot csak akkor használhatja, ha korábban inicializálta a tömböt, deklarálta paraméterként, vagy deklarálta egy olyan tömbre mutató hivatkozásként, amely a program más részén explicit módon van definiálva.

Mindkét formában elnevezi a változót, direct-declarator és módosíthatja a változó típusát. Az alábbi direct-declarator zárójelek ([ ]) tömbtípusra módosítják a deklarátort.

A típusjelölők megjelenhetnek egy tömbtípusú objektum deklarációjában, de a minősítők nem magukra a tömbre, hanem az elemekre vonatkoznak.

Tömbtömböket (többdimenziós tömböt) deklarálhat úgy, hogy a tömbdeklarátort követi a zárójeles konstanskifejezések listájával ebben az formában:

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

A constant-expression szögletes zárójelek az adott dimenzió elemeinek számát határozzák meg: a kétdimenziós tömbök két szögletes kifejezéssel, a háromdimenziós tömbök hárommal és így tovább. Kihagyhatja az első állandó kifejezést, ha a tömböt inicializálta, paraméterként deklarálta, vagy a program más részén explicit módon definiált tömbre mutató hivatkozásként deklarálta.

Összetett deklarátorok használatával különböző típusú objektumokra mutató tömböket határozhat meg, az Összetett deklarátorok értelmezése című szakaszban leírtak szerint.

A tömböket sor szerint tárolja a rendszer. A következő tömb például két sorból áll, egyenként három oszlopból:

char A[2][3];

A rendszer az első sor három oszlopát tárolja először, majd a második sor három oszlopát. Ez azt jelenti, hogy az utolsó alsó index a leggyorsabban változik.

Ha egy tömb egy adott elemére szeretne hivatkozni, használjon egy alsó indexű kifejezést a Postfix Operátorok szakaszban leírtak szerint.

Példák

Az alábbi példák tömbdeklarációkat szemléltetnek:

float matrix[10][15];

A kétdimenziós tömb neve matrix 150 elemből áll, amelyek mindegyike típussal rendelkezik float .

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

Ez a példa egy szerkezettömb deklarációja. Ez a tömb 100 elemből áll; minden elem egy két tagot tartalmazó struktúra.

extern char *name[];

Ez az utasítás egy mutatótömb típusát és nevét deklarálja a következőre char: . A tényleges definíció name máshol történik.

Microsoft-specifikus

A tömb maximális méretének tárolásához szükséges egész szám típusa a size_tméret.

END Microsoft-specifikus kifejezés

Lásd még

Deklarátorok és változódeklarációk