Ordre des operations pour dereference et brack-ref en C

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])