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 expression
pozycji , 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:
Wartość
i
całkowita jest mnożona przez liczbę bajtów zdefiniowanych jako długośćint
elementu. Przekonwertowana wartośći
reprezentujei
int
pozycje.Ta przekonwertowana wartość jest dodawana do oryginalnej wartości wskaźnika (
line
), aby uzyskać adres, który jest pozycją przesunięciai
int
zline
.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ż
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