El problema con el primer codigo es que estas declarando un arreglo de punteros de tamaño 30; no una cadena de 30 caracteres.
Si quieres manejar tu cadena de forma dinamica, tendias que hacer esto:
Código:
char *nombre;
nombre = new char[30];
strcpy(nombre,""123456789012345678901234567890");
cout << nombre;