Der Indexoperator in C
»p[ i ]« bedeutet »*( p + i )« und somit auch »i[ p ]«.
Beispielsweise gilt daher: »a == &a[ 0 ]«, »a + 1 == &a[ 1 ]« (Prioritäten der Operatoren beachten!).
Die Kennzahl eines Objektes in einer Reihung nennt man auch den Index des Objektes.
Die Dereferenzierung der Summe einer Reihung und einer Zahl wird so oft beim Zugriff auf Reihungen verwendet, daß man dafür eine spezielle Abkürzung eingeführt hat: den Index-Operator "[]". Die Schreibweise "B [I ]" ist dabei eine Abkürzung für "*((B )+(I ))". Da die Addition kommutativ ist kann man dafür auch "I [B ]" schreiben. Beispielsweise kann man mit diesem Operator nun statt des Ausdrucks "*( reihung + 0 )" auch den Ausdruck "reihung[ 0 ]" oder den Ausdruck "0[ reihung ]" verwenden, statt des Ausdrucks "*( reihung + 1 )" kann man auch den Ausdruck "reihung[ 1 ]" oder den Ausdruck "1[ reihung ]" verwenden.
main.c
#include <stdio.h> int main( void )
{ int a[ 3 ];
printf( "%d\n", a[ 0 ]= 41 );
printf( "%d\n", a[ 1 ]= 18467 );
printf( "%d\n", a[ 2 ]= 6334 );
printf( "%d\n", a[ 2 ] );
printf( "%d\n", a[ 1 ] );
printf( "%d\n", a[ 0 ] );
printf( "%d\n", 2[ a ] );
printf( "%d\n", 1[ a ] );
printf( "%d\n", 0[ a ] ); }stdout
41
18467
6334
6334
18467
41
6334
18467
41