C'est une déclaration de variable, comme int riguant.
Je dirais que la partie gauche accepte les parenthèses pour permettre de grouper les choses, comme par exemple entre int *(foo[]) versus int (*foo)[]).
En C (et C++), on peut voir la déclaration de type comme deux parties. La gauche, le type primitif, et la droite, comme "une expression qui permet d’accéder à ce type".
Par exemple, int *p; signifie que *p permet d’accéder à un int. Donc p est un pointeur.
En partant de là, si les parenthèses sont autorisées, pas de raison de les interdire dans le cas ou l'expression se réduit à un nom.
# Pourquoi pas?
Posté par Guillaum (site web personnel) . En réponse au journal Toujours plus de fun avec C. Évalué à 10.
C'est une déclaration de variable, comme
int riguant.Je dirais que la partie gauche accepte les parenthèses pour permettre de grouper les choses, comme par exemple entre
int *(foo[])versusint (*foo)[]).En C (et C++), on peut voir la déclaration de type comme deux parties. La gauche, le type primitif, et la droite, comme "une expression qui permet d’accéder à ce type".
Par exemple,
int *p;signifie que*ppermet d’accéder à unint. Donc p est un pointeur.En partant de là, si les parenthèses sont autorisées, pas de raison de les interdire dans le cas ou l'expression se réduit à un nom.