Udostępnij za pośrednictwem


Tablice jednowymiarowe

Wyrażenie przyrostka poprzedzonego wyrażeniem w nawiasach kwadratowych ([]) jest reprezentacją obiektu tablicy.Wyrażenie indeksu reprezentuje wartość pod adresem, które określa pozycja wyrażenie poza przyrostkiem wyrażenia wyrażonego jako

postfix-expression [ expression ]

Na ogół wartość reprezentowana przez przyrostek wyrażenia jest wartością wskaźnika, na przykład identyfikatorem tablicy, a wyrażenie jest wartością całkowitą.Jednak wszystko, co jest wymagane syntaktycznie, jest jednym z wyrażeń typu wskaźnika a reszta może być typem integralnym.Tym samym integralna wartość może być na pozycji i wartości wskaźnika przyrostka wyrażenia, określonego w nawiasach w wyrażenie, lub na pozycji indeksu dolnego.Na przykład, ten kod jest prawidłowy:

// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
   ptr = a;
   sum = 4[ptr];
}

Indeksy dolne wyrażenia są powszechnie stosowane do odnoszenia się do elementów tablicy, ale indeks dolny można zastosować do dowolnego wskaźnika.Niezależnie od kolejności wartości, wyrażenie musi być ujęte w nawiasy kwadratowe ([ ]).

Indeks dolny wyrażenia jest oszacowany przez dodanie integralnej wartości do wartości wskaźnika, a następnie zastosowanie pośredniego operatora (*) do wyniku. (Zobacz Operatory pośrednie i „Address-of” omówienie operatora pośredniego.) W efekcie, dla tablic jednowymiarowych, cztery poniższe wyrażenia są równoważne, przy założeniu, że a jest wskaźnikiem i b jest liczbą całkowitą:

a[b]
*(a + b)
*(b + a)
b[a]

Zgodnie z zasadami konwersji dla operatora dodawania (podane w Operatory dodawania), integralna wartość jest konwertowana do przesuniętego adresu, poprzez pomnożenie jego długości adresowanego typu przez wskaźnik.

Załóżmy na przykład, identyfikator line odwołuje się do tablicy wartości int.Poniższa procedura służy do oszacowania wyrażenia indeksu line[ i ]:

  1. Wartość całkowita i jest mnożona przez liczbę bajtów, zdefiniowaną jako długość elementu int.Przekonwertowane wartości i reprezentują pozycje i int.

  2. Ta przekonwertowana wartość jest dodawana do oryginalnej wartości wskaźnika (line), aby uzyskać adres, który jest przesunięty o i int pozycji z line.

  3. Operator pośredni jest stosowany do nowego adresu.Wynikiem jest wartość elementu tablicy na tej pozycji (intuicyjnie, line [ i ]).

Wyrażenia indeksu line[0] reprezentują wartości pierwszego elementu wiersza, przesunięciem adresu reprezentowanego przez line jest 0.Podobnie, wyrażenie, takie jak line[5] odnosi się do pozycji przesuniętej o 5 pozycji wiersza lub do szóstego elementu tablicy.

Zobacz też

Informacje

Operator indeksu dolnego: []