[C con Clase] pasar string sin hacer casting

Steven Davidson srd4121 en njit.edu
Mar Mayo 19 04:40:59 CEST 2009


Hola Kalith,

Kalith wrote:
> buenas pues cuando pasamos una cadena a una funcion (cadena no de la
> clase string, sino una serie de caracteres) y lo esta esperando un 
> puntero pues debemos hacer el casting cuando llamamos a la funcion
> ejemplo:
> 
> void funcion(char * lalala)
> {
>               //
> }
> 
> funcion((char*)"cadena");
> 
> si yo no quiero hacer el casting cuando llamo a la funcion como
> podria implementar eso?

No deberías hacer un cásting porque no deberías pasar una cadena literal 
y constante como una variable; esto no tiene sentido.

Ahora bien, si la función realmente no necesita ser una variable, 
entonces deberías cambiar el tipo del parámetro para reflejar tal idea. 
Por ejemplo,

void funcion( const char *ptr );
...
funcion( "cadena" );

Si en tal función vas a modificar el contenido del array, entonces no te 
queda otra solución que copiar tal cadena literal a un array de 'char'. 
Por ejemplo,

void funcion( char *ptr );
...
char cadena[] = "cadena";
funcion( "cadena" );


Espero que esto aclare la duda.

Steven





Más información sobre la lista de distribución Cconclase