2010-06-24 5 views

Répondre

11

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

(il n'y a pas de différence sémantique jusqu'à ce que la const se déplace par rapport à l'étoile)

+2

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

+0

Hahahaha .. épique! :RÉ –

2

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 est de droite à gauche.

2

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

char const ** const

est un const pointer to a pointer to a constant char. Par conséquent, char const * est plus cohérent à cet égard. Beaucoup de gens, cependant, préfèrent const char* pour sa lisibilité - il est immédiatement clair ce que cela signifie.

17

const char* p est un pointeur vers un const char.

char const* p est un pointeur vers un char const.

Depuis const char et char const est le même, c'est la même chose.

Cependant, tenez compte:

char * const p est un pointeur const à un (non-const) char. C'est à dire. vous pouvez changer le caractère réel, mais pas le pointeur qui pointe dessus.

4

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

1) const char * p - pointeur à une constante char ('p' est pas modifiable, mais le pointeur)
2) char * const p - Pointeur également un Char constant

Toutefois, si vous avez quelque chose comme:
char * const p - Ceci déclare que 'p' est un pointeur constant vers un char. (Char p est modifiable mais le pointeur ne l'est pas)