Heim > Backend-Entwicklung > C++ > Warum funktioniert „2[arr]' in C und C?

Warum funktioniert „2[arr]' in C und C?

Susan Sarandon
Freigeben: 2024-11-26 13:56:09
Original
753 Leute haben es durchsucht

Why Does `2[arr]` Work in C and 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage