Deklaracje tablicy
"Deklaracja tablicy" nazywa tablicę i określa typ jej elementów.Może również definiować liczbę elementów w tablicy.Zmienna o typie tablicowym jest uważana za wskaźnik do typu elementów tablicy.
Składnia
declaration:
declaration-specifiers init-declarator-list opt**;**init-declarator-list:
init-declaratorinit-declarator-list**,** init-declarator
init-declarator:
declaratordeclarator = initializer
declarator:
pointer optdirect-declaratordirect-declarator:
direct-declarator [ constant-expression opt**]**
Ponieważ constant-expression jest opcjonalne, składnia przyjmuje dwie postacie:
Pierwsza postać definiuje zmienną tablicową.Argument constant-expression w nawiasach określa liczbę elementów w tablicy.Argument constant-expression, jeśli jest obecny, musi być typem całkowitym, o wartości większej od zera.Każdy element ma typ podany przez type-specifier, który może być dowolnym typem, z wyjątkiem void.Element tablicy nie może mieć typu funkcji.
Druga postać składni deklaruje zmienną, która została zdefiniowana w innym miejscu.Pomija argument constant-expression w nawiasach, ale nie nawiasy.Możesz użyć składni w tej postaci tylko wtedy, gdy wcześniej zainicjowano tablicę, zadeklarowano ją jako parametr lub zadeklarowano ją jako odwołanie do tablicy zdefiniowanej w innym miejscu w programie w sposób jawny.
W obu formach, direct-declarator nazywa zmienną i może zmodyfikować typ zmiennej.Nawiasy ([ ]), następujące po direct-declarator, modyfikują deklarator na typ tablicowy.
Kwalifikatory typu mogą pojawić się w deklaracji obiektu o typie tablicowym, ale kwalifikatory stosuje się raczej do elementów, niż do samej tablicy.
Możesz zadeklarować tablicę tablic (tablicę "wielowymiarową") za pomocą listy stałych wrażeń w nawiasach, następującej po deklaratorze tablicy, w następującej postaci:
type-specifier declarator [constant-expression] [constant-expression] ...
Każde constant-expression w nawiasach definiuje liczbę elementów w danym wymiarze: tablica dwuwymiarowa posiada dwa wyrażenia w nawiasach, tablica trójwymiarowa – trzy, itd.Możesz pominąć pierwsze wyrażenie stałe, jeśli wcześniej zainicjowano tablicę, zadeklarowano ją jako parametr lub zadeklarowano ją jako odwołanie do tablicy zdefiniowanej w innym miejscu w programie w sposób jawny.
Przy użyciu złożonych deklaratorów możesz zdefiniować tablice wskaźników do różnych typów obiektów, jak opisano w Interpretowanie bardziej złożonych deklaratorów.
Tablice są przechowywane wierszami.Na przykład, następująca tablica składa się z dwóch wierszy, każdy o trzech kolumnach:
char A[2][3];
Najpierw przechowywane są trzy kolumny pierwszego wiersza, a po nich trzy kolumny drugiego wiersza.Oznacza to, że ostatni indeks dolny zmienia się najszybciej.
Aby odwołać się do pojedynczego elementu tablicy, użyj wyrażenia indeksu dolnego, jak opisano w Operatory przyrostkowe.
Przykłady
W poniższych przykładach pokazano deklarację tablic:
float matrix[10][15];
Dwuwymiarowa tablica o nazwie matrix ma 150 elementów, każdy o typie float.
struct {
float x, y;
} complex[100];
To jest deklaracja tablicy struktur.Ta tablica ma 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 do typu char.Rzeczywiste definicja name występuje w innym miejscu.
Specyficzne dla firmy Microsoft
Typ całkowity wymagany do przechowywania maksymalnego rozmiaru tablicy ma rozmiar size_t.size_t zdefiniowany w pliku nagłówkowym STDDEF.H jest wartością typu unsigned int i ma zakres od 0x00000000 do 0x7CFFFFFF.
KONIEC informacji specyficznych dla firmy Microsoft