Was macht 0 [p]? [Duplikat]

8

Was macht der folgende C-Code?

%Vor%

Ich hätte allerdings, dass dies kein Ereignis kompilieren würde. Aber es wird sogar ohne Segmentierungsfehler ausgeführt. Also frage ich mich, welche seltsame Verwendung des [] -Operators ich verpasst habe.

    
Danvil 27.12.2013, 13:03
quelle

3 Antworten

11

Der C-Standard definierte den Operator [] auf diese Weise:

Was a und b sind a[b] wird als *((a)+(b))

betrachtet

Und deshalb ist 0[p] == *(0 + p) == *(p + 0) == p[0] das erste Element des Arrays.

    
rullof 27.12.2013, 13:13
quelle
8

0[p] entspricht p[0] . Beide werden als

konvertiert %Vor%

Von oben sind beide Aussagen gleich.

    
Chinna 27.12.2013 13:05
quelle
6
%Vor%

in 0[p] = 42;

entspricht p[0]

+ Operation ist kommutativ und wir haben:

%Vor%     
ouah 27.12.2013 13:04
quelle

Tags und Links