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:
Pierwszy indeks dolny
2
jest mnożony przez rozmiar tablicy typuint
o wymiarach 4 na 6 i dodawany do wartości wskaźnika tablicyprop
. Wynik wskazuje na trzecią tablicęprop
o wymiarach 4 na 6.Drugi indeks dolny
1
jest mnożony przez rozmiar 6-elementowej tablicy typuint
i dodawany do adresu reprezentowanego przezprop[2]
.Każdy element tablicy 6 elementów jest wartością
int
, więc ostatni indeks3
dolny , jest mnożony przez rozmiar elementuint
przed dodaniu doprop[2][1]
elementu . Wskaźnik wynikowy adresuje czwarty element 6-elementowej tablicy.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 prop
tró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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla