Maison > développement back-end > C++ > &array[5] est-il une expression C valide pour accéder à l'élément de tableau One-Past-the-End ?

&array[5] est-il une expression C valide pour accéder à l'élément de tableau One-Past-the-End ?

Susan Sarandon
Libérer: 2024-12-27 00:44:11
original
616 Les gens l'ont consulté

Is &array[5] a Valid C   Expression for Accessing the One-Past-the-End Array Element?

Accès aux éléments de tableau One-Past-the-End avec &array[5]

Question :

&array[5] est-il considéré comme une expression de code C valide qui fait référence à l'élément juste après la fin d'un array ?

Réponse :

Oui, &array[5] est considéré comme du code C légal selon la norme C.

Explication détaillée :

C99 Norme :

  • 6.5.2.1, paragraphe 2 : Définit l'opérateur d'indice [] comme équivalent à (((E1) (E2) )), où E1 est un objet tableau et E2 est un entier.
  • 6.5.3.2, paragraphe 3 : Indique que si l'opérande de l'opérateur & est le résultat d'un opérateur [], l'opérateur & et l'unaire implicite * ne sont pas évalués , ce qui entraîne la suppression de l'opérateur & et le remplacement de l'opérateur [] par un opérateur.

C Standard :

  • 6.5.6, paragraphe 8 : Permet aux pointeurs de pointer un après le dernier élément d'un tableau à condition qu'ils ne soient pas déréférencés.

Sur la base de ces normes, l'expression &array[5] est évaluée comme suit :

  • &(&array[5]) = &(matrice 5)
  • &*(matrice 5) = matrice 5

Puisque le tableau 5 pointe après la fin du tableau et n'est pas déréférencé, &array[5] est un valide expression.

Comparaison avec la norme C :

La norme C correspond à la norme C à cet égard.

Raison de la traiter différemment du tableau 5 ou &array[4] 1 :

La principale différence entre &array[5] et des expressions comme array 5 ou &array[4] 1 sont leur utilisation prévue. Alors que le tableau 5 et &array[4] 1 effectuent explicitement une arithmétique de pointeur pour obtenir un pointeur décalé par rapport au début du tableau, &array[5] utilise l'opérateur [] pour accéder directement à l'élément à ce décalage. Cette distinction permet aux programmeurs de référencer plus facilement la fin du tableau sans avoir à effectuer une arithmétique de pointeur explicite.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal