Deklaracje tablicy
"deklaracja tablicy" nazywa tablicę i określa typ jej elementów. Może również definiować liczbę elementów w tablicy. Zmienna z typem tablicy jest traktowana jako wskaźnik typu elementów tablicy.
Składnia
declaration
:
declaration-specifiers
init-declarator-list
Zdecydować ;
init-declarator-list
:
init-declarator
init-declarator-list
,
init-declarator
init-declarator
:
declarator
declarator
=
initializer
declarator
:
pointer
Zdecydować direct-declarator
direct-declarator
:
direct-declarator
[
constant-expression
Zdecydować ]
Ponieważ constant-expression
jest opcjonalna, składnia ma dwie formy:
Pierwszy formularz definiuje zmienną tablicową.
constant-expression
Argument w nawiasach określa liczbę elementów w tablicy. Wartośćconstant-expression
, jeśli istnieje, musi mieć typ całkowity i wartość większą niż zero. Każdy element ma typ podany przeztype-specifier
element , który może być dowolnym typem z wyjątkiemvoid
. Element tablicy nie może być typem funkcji.Drugi formularz deklaruje zmienną zdefiniowaną gdzie indziej.
constant-expression
Pomija argument w nawiasach kwadratowych, ale nie nawiasy kwadratowe. Tego formularza można użyć tylko wtedy, gdy wcześniej zainicjowano tablicę, zadeklarowaliśmy ją jako parametr lub zadeklarowaliśmy jako odwołanie do tablicy, która jest jawnie zdefiniowana w innym miejscu w programie.
W obu formularzach direct-declarator
nazwij zmienną i może modyfikować typ zmiennej. Nawiasy kwadratowe ([ ]
) po direct-declarator
zmodyfikowaniu deklaratora do typu tablicy.
Kwalifikatory typów mogą występować w deklaracji obiektu typu tablicy, ale kwalifikatory mają zastosowanie do elementów, a nie samej tablicy.
Tablicę tablic (tablicę wielowymiarową) można zadeklarować, postępując zgodnie z deklaratorem tablicy z listą wyrażeń stałych w nawiasach w tym formularzu:
type-specifier
declarator
[
constant-expression
]
[
constant-expression
]
...
Każdy constant-expression
w nawiasach definiuje liczbę elementów w danym wymiarze: tablice dwuwymiarowe mają dwa wyrażenia w nawiasach, tablice trójwymiarowe mają trzy i tak dalej. Możesz pominąć pierwsze wyrażenie stałe, jeśli zainicjowano tablicę, zadeklarował ją jako parametr lub zadeklarował jako odwołanie do tablicy jawnie zdefiniowanej w innym miejscu w programie.
Tablice wskaźników można definiować na różne typy obiektów przy użyciu deklaratorów złożonych, zgodnie z opisem w temacie Interpretowanie bardziej złożonych deklaratorów.
Tablice są przechowywane według wierszy. Na przykład następująca tablica składa się z dwóch wierszy z trzema kolumnami:
char A[2][3];
Trzy kolumny pierwszego wiersza są najpierw przechowywane, a następnie trzy kolumny drugiego wiersza. Oznacza to, że ostatni indeks dolny różni się najbardziej szybko.
Aby odwołać się do pojedynczego elementu tablicy, użyj wyrażenia indeksu dolnego zgodnie z opisem w temacie Operatory postfiksów.
Przykłady
Te przykłady ilustrują deklaracje tablic:
float matrix[10][15];
Tablica dwuwymiarowa o nazwie matrix
ma 150 elementów, z których każdy ma float
typ.
struct {
float x, y;
} complex[100];
Ten przykład jest deklaracją tablicy struktur. Ta tablica zawiera 100 elementów; każdy element jest strukturą zawierającą dwa elementy członkowskie.
extern char *name[];
Ta instrukcja deklaruje typ i nazwę tablicy wskaźników na char
. Rzeczywista definicja name
występuje gdzie indziej.
Specyficzne dla firmy Microsoft
Typ liczby całkowitej wymaganej do przechowywania maksymalnego rozmiaru tablicy to rozmiar size_t
.
END Microsoft Specific