8
votes

Différence entre Const Char * P et Char Const * P

c

1 commentaires

La Dupe est ici: Stackoverflow.com/q/890535/694576 Pas où elle avait été proche, comme ce dernier est à propos de C ++.


5 Réponses :


13
votes

Certains des mots ne sont pas dans le même ordre.

(il n'y a pas de différence sémantique jusqu'à ce que le const bouge par rapport à l'étoile)


1 commentaires

J'ai ri de cela plus que ce que les règles me permettent de faire.



2
votes

Il n'y a pas de différence fonctionnelle entre ces deux. Le «plus précis» est Char Const * P Parce que la sémantique a raison de rester à gauche.


0 commentaires

2
votes

Il n'y a pas de différence sémantique, mais c'est une question de style de codage et de lisibilité. Pour des expressions complexes, la lecture de droite à gauche fonctionne bien:

Char Cons ** const

est un pointeur const sur un pointeur à un char .

SO Char Cons * est plus cohérent à cet égard. Cependant, beaucoup de gens préfèrent const char * pour sa réadaptitude - il est immédiatement clair ce que cela signifie.


0 commentaires

19
votes

const char * p est un pointeur sur un Const Char .

chartons * p est un pointeur sur un charret .

Depuis Const Char et Char Const est identique, c'est pareil.

Cependant, considérez:

char * const p est un "code> const" / code> pointeur sur un (non-const). C'est à dire. Vous pouvez modifier le caractère réel, mais pas le pointeur pointant vers elle.


0 commentaires

4
votes

Aucune différence, car la position du '*' n'a pas bougé.

1) Const Char * p - Pointeur à un caractère constant ('P' n'est pas modifiable mais le pointeur est)
2) Char Const * p - également pointeur à un char

Cependant, si vous aviez quelque chose comme:
Char * Const P - Cela déclare "P" d'être un pointeur constant à un char. (Char P est modifiable mais le pointeur n'est pas)


0 commentaires