Udostępnij za pośrednictwem


Tablice jednowymiarowe

Wyrażenie postfiksu, po którym następuje wyrażenie w nawiasach kwadratowych ([ ]) jest dolnym opisem elementu obiektu tablicy. Wyrażenie indeksu dolnego reprezentuje wartość w adresie, który znajduje się expression poza postfix-expression wartością wyrażoną jako

postfix-expression [ expression ]

Zazwyczaj wartość reprezentowana przez postfix-expression jest wartością wskaźnika, taką jak identyfikator tablicy, i expression jest wartością całkowitą. Jednak wszystkie wymagane składniowo jest to, że jeden z wyrażeń ma typ wskaźnika, a drugi ma typ całkowity. Wartość całkowita może znajdować się w postfix-expression pozycji, a wartość wskaźnika może znajdować się w nawiasach w expressionpozycji , lub "indeksu dolnego". Na przykład ten kod jest legalny:

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

Wyrażenia indeksu dolnego są często używane do odwoływania się do elementów tablicy, ale można zastosować indeks dolny do dowolnego wskaźnika. Niezależnie od kolejności wartości, expression należy ujęć w nawiasy ([ ]).

Wyrażenie indeksu dolnego jest oceniane przez dodanie wartości całkowitej do wartości wskaźnika, a następnie zastosowanie operatora pośredniego (*) do wyniku. (Zobacz Operatory pośrednie i adresowe , aby zapoznać się z omówieniem operatora pośredniego). W efekcie dla tablicy jednowymiarowej następujące cztery wyrażenia są równoważne, przy założeniu, że a jest to wskaźnik i b jest liczbą całkowitą:

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

Reguły konwersji dla operatora dodawania są podane w operatorach dodawania). Aby przekonwertować wartość całkowitą na przesunięcie adresu, jest on mnożony przez długość typu adresowanego przez wskaźnik.

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

  1. Wartość i całkowita jest mnożona przez liczbę bajtów zdefiniowanych jako długość int elementu. Przekonwertowana wartość i reprezentuje iint pozycje.

  2. Ta przekonwertowana wartość jest dodawana do oryginalnej wartości wskaźnika (line), aby uzyskać adres, który jest pozycją przesunięcia iint z line.

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

Wyrażenie line[0] indeksu dolnego reprezentuje wartość pierwszego elementu wiersza, ponieważ przesunięcie z adresu reprezentowanego przez line wartość to 0. Podobnie wyrażenie, takie jak line[5] odnosi się do elementu przesunięcia pięciu pozycji z linii lub szóstego elementu tablicy.

Zobacz też

Operator indeksu dolnego: