Udostępnij za pośrednictwem


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 wynikający 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 momentu 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 jest tablicą, 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 elementu .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ów jest wartością int , więc ostatni indeks 3dolny , jest mnożony przez rozmiar elementu 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 następnych dwóch 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 ; odwołuje się do tablicy 6-elementowej (zadeklarowanej wcześniej). Ponieważ wartość wskaźnika dotyczy tablicy, 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: