Cita:
Iniciado por jose_desa 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 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.