Heim >Backend-Entwicklung >C++ >Funktioniert „2[arr]' in C und C?
Zugriff auf Arrays mit Index[array] in C und C
Beachten Sie den folgenden Codeausschnitt:
int arr[] = {1, 2, 3}; 2[arr] = 5; // Does this compile? assert(arr[2] == 5); // Does this assertion fail?
Einige Interviewer fragen sich vielleicht, warum dieses Code-Snippet ohne kompiliert und ausgeführt wird Fehler.
Den Code verstehen
Der Ausdruck 2[arr] entspricht *(2 arr). Da die Addition in C und C kommutativ ist, spielt die Reihenfolge der Argumente für [] keine Rolle. Daher greift 2[arr] effektiv auf das dritte Element des Arrays arr zu.
Wird dies durch die Sprachspezifikation garantiert?
Ja. Die C- und C-Standards geben dieses Verhalten ausdrücklich an:
Daher ist der Zugriff auf Arrays mit index[array] durch die Sprachspezifikation garantiert, auch wenn dies ungewöhnlich erscheint oder kontraintuitiv.
Das obige ist der detaillierte Inhalt vonFunktioniert „2[arr]' in C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!