Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/04/2010, 04:44
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Dudas sobre punteros

Cita:
Iniciado por jose_desa Ver Mensaje
Por que es permitido inicialzar un puntero de tipo char asi:

char *nom[]="Jose";
Esto es un error de compilacion.

Sin embargo, no es un error hacerlo asi:

char* nombre = "Jose";

o asi

char nombre[] = "Jose";

debido a que se ha definido que este tipo de inicializacion es igual a haberlo hecho asi:

char* nombre = { 'J', 'o', 's', 'e', '\0' }; // ojo con el fin de string al final

Es una bendicion que se le dio al compilador para que el programador no tenga que escribir mas de la cuenta.

En el ejemplo dado, hay un error, pues la definicion puesta en el comentario no es equivalente. Le falta el '\0' final, que el string literal provee.

Cita:
Iniciado por jose_desa Ver Mensaje
char text[]="Good morning!"; // o asi char text[14]={'G','o','o','d',' ','m','o','r','n','i','n','g','!'},
cout esta entrenado para escribir un char* de manera distinta que un char.
En el caso de un char* se pone a escribir chars hasta encontrar un '\0', desde la direccion de memoria que recibe.