Tablice wielowymiarowe (C)

Wyrażenie indeksu dolnego może mieć wiele indeksów dolnych, jak pokazano poniżej:

expression1 [ expression2 ] [ expression3 ] /*...*/ ;

Wyrażenia indeksu dolnego są skojarzone od lewej do prawej. Wyrażenie indeksu dolnego po lewej stronie, expression1[ expression2 ], jest oceniane jako pierwsze. Adres, który wynika z dodawania expression1 i expression2 tworzenia wyrażenia wskaźnika, a następnie expression3 jest dodawany do tego wyrażenia wskaźnika w celu utworzenia nowego wyrażenia wskaźnika itd. do czasu dodania ostatniego wyrażenia indeksu dolnego. Operator pośredni (*) jest stosowany po obliczeniu ostatniego wyrażenia w indeksie dolnym, chyba że końcowa wartość wskaźnika adresuje typ tablicy.

Wyrażenia z wieloma indeksami dolnymi odnoszą się do elementów "tablic wielowymiarowych". Tablica wielowymiarowa to tablica, której elementy są tablicami. Na przykład, pierwszy element tablicy trójwymiarowej jest tablicą z dwoma wymiarami.

Przykłady

W poniższych przykładach tablica o nazwie prop została zadeklarowana za pomocą trzech elementów, z których każdy jest tablicą o wymiarach 4 na 6, zawierającą wartości typu int.

int prop[3][4][6];
int i, *ip, (*ipp)[6];

Odwołanie do tablicy prop wygląda następująco:

i = prop[0][0][1];

W przykładzie pokazano, jak odwoływać się do drugiego pojedynczego int elementu klasy prop. Tablice są przechowywane wierszami, zatem ostatni indeks dolny zmienia się najszybciej; wyrażenie prop[0][0][2] odwołuje się do następnego (trzeciego) elementu tablicy, i tak dalej.

i = prop[2][1][3];

Ta instrukcja jest bardziej złożonym odwołaniem do pojedynczego elementu tablicy prop. Wyrażenie jest oceniane w następujący sposób:

  1. Pierwszy indeks dolny 2 jest mnożony przez rozmiar tablicy typu int o wymiarach 4 na 6 i dodawany do wartości wskaźnika tablicy prop. Wynik wskazuje na trzecią tablicę prop o wymiarach 4 na 6.

  2. Drugi indeks dolny 1 jest mnożony przez rozmiar 6-elementowej tablicy typu int i dodawany do adresu reprezentowanego przez prop[2].

  3. Każdy element tablicy 6-element jest wartością int , więc końcowy indeks 3dolny , jest pomnożony przez rozmiar obiektu int przed dodaniu do prop[2][1]elementu . Wskaźnik wynikowy adresuje czwarty element 6-elementowej tablicy.

  4. Operator pośredni jest stosowany do wartości wskaźnika. Wynik jest elementem typu int pod tym adresem.

W tych dwóch następnych przykładach pokazano przypadki, w których operator pośredni nie jest stosowany.

ip = prop[2][1];

ipp = prop[2];

W pierwszej z tych instrukcji wyrażenie prop[2][1] jest prawidłowym odwołaniem do tablicy proptrójwymiarowej ; odnosi się do tablicy 6-elementowej (zadeklarowanej wcześniej). Ponieważ wartość wskaźnika adresuje tablicę, operator pośredni nie jest stosowany.

Podobnie, wynik wyrażenia prop[2] w drugiej instrukcji ipp = prop[2]; jest wartością wskaźnika adresującą tablicę dwuwymiarową.

Zobacz też

Operator indeksu dolnego: