Maison >développement back-end >C++ >Pourquoi `2[arr]` fonctionne-t-il en C et C ?

Pourquoi `2[arr]` fonctionne-t-il en C et C ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 13:56:09792parcourir

Why Does `2[arr]` Work in C and C  ?

Accès aux tableaux par index[array] en C et C

La question d'entretien classique impliquant la syntaxe non conventionnelle d'accès aux tableaux 2[arr] a suscité la curiosité des programmeurs. Cette syntaxe, qui attribue une valeur au troisième élément du tableau, semble inhabituelle en raison de l'ordre inversé du nom du tableau et de l'index.

Selon les spécifications C/C, cette approche peu orthodoxe est effectivement valable . Le paragraphe 1 6.5.2.1 de la norme C99 indique explicitement que les arguments de l'opérateur [] incluent une expression de type "pointeur vers le type d'objet" et une expression entière.

De plus, le paragraphe 2 précise que la définition du L'opérateur [] est identique à (*((E1) (E2))), où E1 représente l'objet tableau (ou un pointeur vers son premier élément) et E2 représente l'entier indice. Bien que cette définition décrit la fonctionnalité de l'opérateur, elle n'impose aucune restriction sur l'ordre des arguments.

Cela signifie que des expressions comme 2[arr], où l'index précède le nom du tableau, sont syntaxiquement valide et sémantiquement correct. L'expression est évaluée comme *(2 arr), 2 étant ajouté à l'adresse de base du tableau. Par conséquent, le troisième élément du tableau est ciblé et modifié avec succès.

Par conséquent, la syntaxe inversée de 2[arr] n'est pas simplement une astuce du compilateur mais une fonctionnalité légitime des langages C et C, permettant aux programmeurs d'accéder éléments du tableau d'une manière non traditionnelle mais entièrement fonctionnelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn