Mittwoch, 23. Februar 2011

C: [] ist kommutativ!

(Date/Datum: 080218-00:58, Hits: 1738)

Heute möchte ich wieder etwas über meiner Lieblingssprache C schreiben.

Dazu zunächst eine Randbemerkung:
Wenn ein mathematischer Operator kommutativ ist, dann bedeutet dies, dass man die Operanden vertauschen kann. Beispielsweise ist der Multiplikations-Operator kommutativ, denn man kann sowohl schreiben

a * b

als auch

b * a

Nun zum eigentlichen Thema:
In der C-Programmierung gibt es auch viele solcher kommutativer Operatoren und einer davon ist der Operator [] (für Array-Indizes). Vielen ist nicht bekannt, dass es möglich ist bei diesem Operator die Operanden zu vertauschen und aus Gründen des guten Programmierstils sollte man sich auch hüten, von der üblichen Schreibweise abzuweichen. Erklären möchte ich dieses Feature meiner Lieblingssprache trotzdem.

Gegeben sei

int a[10];

Möchte man nun auf Array-Index 6 (also das 7. Element) zugreifen, dann schreibt man üblicher Weise entweder a[6] oder auch *(a+6). Beides ist leicht verständlich und weit verbreitet.

Weniger üblich ist hingegen die Schreibweise 6[a]. Der []-Operator addiert quasi die Adresse von a mit der Zahl 6. Aus diesem Grund kann man genauso gut die Zahl 6 mit der Adresse von a addieren.

Natürlich sind dem entsprechend auch Ausdrücke wie *(&(6[a])) korrekt formulierter C-Code.

Keine Kommentare:

Kommentar veröffentlichen