Array-Element-Operator []

Der Array-Element-Operator greift auf ein Element eines Arrays zu. Der Index des Arrays wird innerhalb von eckigen Klammern [] angegeben. Das Array, auf das zugegriffen werden soll, steht links davon.





Element 3: 400

Element 2: 333
#include <stdio.h>

int main(){
  int a[5] = {100, 200, 300, 400, 500};
  printf("Element 3: %d\n", a[3]);
  a[2] = 333;
  printf("Element 2: %d\n", a[2]);
  return 0;
}

Details

Der Array-Element-Operator erwartet einen Array-Operanden als lvalue und einen Index-Operanden als rvalue und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein lvalue. Der Array-Operand muss ein Array oder ein Pointer sein, der Index-Operand muss ein Integer-Typ sein.

Als Array-Operand kann ein beliebiger Ausdruck stehen, der zu einem lvalue ausgewertet wird, welcher ein Array oder einen Pointer darstellt. Wenn der Array-Operand als const deklariert ist, so gilt dies auch für den Rückgabewert.

Der Index-Operator muss ein Integer-Typ sein. Da Arrays in C und C++ bei 0 (Null) zu zählen beginnen, sollte nach allgemeinem Bewusstsein der Index zudem grössergleich 0 sein. Allerdings ist es nicht verboten, auch vorzeichenbehaftete Werte zu verwenden ebenso wie Ausdrücke, welche zu einem beliebigen signed int auswerten.

Durch die Abarbeitungsrichtung von links nach rechts wird es möglich, mehrdimensionale Arrays durch direktes Anfügen von weiteren Array-Element-Operatoren anzusprechen:


Element 1, 2: 6
int b[2][3] = {{1, 2, 3}, {4, 5, 6}};
printf("Element 1, 2: %d\n", b[1][2]);

Bei diesem Beispiel kann die row-major-Speicherung (Zeilen zuerst) beobachtet werden, welche bei C und C++ verwendet wird. Weitere Erklärungen dazu können bei der Deklaration und Definition eines Arrays nachgelesen werden.

Der Array-Element-Operator wird in C und C++ als ein kommutativer Ausdruck gelesen. Dies bedeutet, er erwartet zwei Operanden, wobei einer davon innerhalb der eckigen Klammern stehen muss. Normalerweise und nach allgemeinem Bewusstsein steht innerhalb der eckigen Klammern der Index-Operator. Die Syntax von C und C++ allerdings erlaubt es, die beiden Operanden auch zu vertauschen. Die folgenden beiden Zeilen sind somit äquivalent, es wir jedoch stengstens angeraten, der üblichen Schreibweise zu folgen.

Standard
a[4] = 555;
4[a] = 555;