Udostępnij za pośrednictwem


Tablice jednowymiarowe

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

postfix-expression [ expression ]

Zazwyczaj wartość reprezentowana przez postfix-expression element jest wartością wskaźnika, taką jak identyfikator tablicy, i expression jest wartością całkowitą. Jednak wszystko, co jest 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 pozycji , lub "indeksu expressiondolnego". 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 musi być ujęta w nawiasy kwadratowe ([ ]).

Wyrażenie indeksu dolnego jest obliczane 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 na potrzeby dyskusji na temat operatora pośredniego). W przypadku 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 ]indeksu dolnego :

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

  2. Ta przekonwertowana wartość jest dodawana do oryginalnej wartości wskaźnika (line) w celu uzyskania adresu, który jest przesunięcie 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żenie line[0] indeksu dolnego reprezentuje wartość pierwszego elementu wiersza, ponieważ przesunięcie z adresu reprezentowanego przez line wartość wynosi 0. Podobnie wyrażenie, takie jak line[5] odnosi się do elementu przesunięcia pięciu pozycji z wiersza lub szóstego elementu tablicy.

Zobacz też

Operator indeksu dolnego: