Si je fais *ptr[x]
, est-ce que cela équivaut à *(ptr[x])
ou à (*ptr)[x]
?
*(ptr[x])
Voir le tableau de priorité des opérateurs Wikipedia ou, pour un tableau plus détaillé, ce tableau spécifique à C / C ++ .
En C, tous les opérateurs postfixés ont une priorité plus élevée que les opérateurs préfixés et les opérateurs préfixés ont une priorité plus élevée que les opérateurs infixés. Donc c’est *(ptr[x])
Utilisation du mouvement d’parsing et d’parsing de cet exemple simple dans le sens anti-horaire
1. en commençant par ptr, travaillez dans le sens contraire des aiguilles d'une montre jusqu'à ce que vous renconsortingez un opérateur astérisque 2. astérisque, dans le sens anti-horaire jusqu'à ce que vous frappiez l'opérateur indice 3. nous arrivons ici, chez l'opérateur indice [x]
Puisque []
a une priorité plus élevée que l’astérisque selon ce tableau , cela le rend *(ptr[x])