2010-06-24 28 views

Respuesta

11

Algunas de las palabras no están en el mismo orden.

(no hay diferencia semántica hasta que la const se mueve en relación a la estrella)

+2

Me reí de esto más de lo que las reglas de SO me permiten hacer. –

+0

Hahahaha .. épica! :RE –

2

No hay diferencia funcional entre los dos. El más "preciso" es char const * p porque la semántica es de derecha a izquierda.

2

No hay diferencia semántica, pero es una cuestión de estilo de codificación y legibilidad. Para expresiones complejas, la lectura de derecha a izquierda funciona bien:

char const ** const

es una const pointer to a pointer to a constant char.

Por lo tanto, char const * es más coherente en este sentido. Muchas personas, sin embargo, prefieren const char* por su facilidad de lectura; está claro de inmediato lo que significa.

17

const char* p es un puntero a un const char.

char const* p es un puntero a un char const.

Dado que const char y char const es lo mismo, es lo mismo.

Sin embargo, tenga en cuenta:

char * const p es un puntero a un char const (no constante). Es decir. puede cambiar el carácter real, pero no el puntero que lo señala.

4

No hay diferencia, ya que la posición del '*' no se ha movido.

1) const char * p - Puntero a un char constante ('p' no se puede modificar, pero el puntero es)
2) const char * p - También puntero a una constante Char

Sin embargo, si tenía algo como:
char * const p - Esto declara que 'p' es un puntero constante de un char. (Char p es modificable pero el puntero no lo es)