Heim >Backend-Entwicklung >C++ >Warum funktioniert „2[arr]' in C und C?
Zugriff auf Arrays über Index[array] in C und C
Die klassische Interviewfrage mit der unkonventionellen Array-Zugriffssyntax 2[arr] hat hat bei Programmierern Neugier geweckt. Diese Syntax, die dem dritten Element des Arrays einen Wert zuweist, erscheint aufgrund der umgekehrten Reihenfolge des Array-Namens und des Index ungewöhnlich.
Laut den C/C-Spezifikationen ist dieser unorthodoxe Ansatz tatsächlich gültig . In Absatz 1 6.5.2.1 des C99-Standards heißt es ausdrücklich, dass die Argumente für den []-Operator einen Ausdruck vom Typ „Zeiger auf Objekttyp“ und einen ganzzahligen Ausdruck enthalten.
Darüber hinaus stellt Absatz 2 klar, dass die Definition von Der []-Operator ist identisch mit (*((E1) (E2))), wobei E1 das Array-Objekt (oder einen Zeiger auf sein erstes Element) und E2 den ganzzahligen Index darstellt. Während diese Definition die Funktionalität des Operators umreißt, legt sie keine Einschränkungen hinsichtlich der Reihenfolge der Argumente fest.
Das bedeutet, dass Ausdrücke wie 2[arr], bei denen der Index vor dem Array-Namen steht, syntaktisch sind gültig und semantisch korrekt. Der Ausdruck wird als *(2 arr) ausgewertet, wobei 2 zur Basisadresse des Arrays hinzugefügt wird. Folglich wird das dritte Element des Arrays erfolgreich anvisiert und geändert.
Daher ist die umgekehrte Syntax von 2[arr] nicht nur ein Compiler-Trick, sondern eine legitime Funktion von C- und C-Sprachen, die Programmierern den Zugriff ermöglicht Array-Elemente auf unkonventionelle, aber voll funktionsfähige Weise.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „2[arr]' in C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!