12/11/2010, 19:49
|
| | Fecha de Ingreso: junio-2010 Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 7 meses Puntos: 95 | |
Respuesta: ¿como hacer return a una string? pasa la cadena por referencia, de esa manera no hay necesidad de regresar ningun valor y no te lias.
Ademas, siempre que utilizas funciones y uno de tus argumentos es un array, una buena practica de programacion es pasar los arrays por referencia, y no por valor.
Cuando pasas los arrays por referencia, la funcion modifica directamente el array.
Cuando pasas los arrays por valor, la funcion crea una copia del array y cuando termina de trabajar con el array, lo regresa.
Imaginate si tienes una funcion recursiva, cuyo argumento sea un array dinamico (o un array[100] por hacerlo "grande") y cada vez que la funcion se llame a si misma, una copia del array se va a almacenar en memoria. No bastaran muchas llamadas recursivas, antes de que te mande el error " segmentation fault" en otras palabras, te vas a quedar sin memoria.
La otra ventaja cuando pasas valores por referencia, y no por valor, es que cuando manejas este tipo de estructura de datos (o alguna estructura de datos en general), el rendimiento y rapidez de una llamada por referencia es mayor que a la eficiencia de un pase por valor.
como ya comento sam90, lo unico que tienes que utilizar es un puntero en tu funcion, agregandole un *
pero cuando llamas a la funcion, tienes que incluir un & para decirle al compilador que estas pasando por referencia, y no por valor.
Por eso el compilador te esta diciendo que no se puede convertir char * a char[10]
tu funcion puede ser
void mifuncion(char *micadena)
{
//...tu codigo
}
int main()
{
char micadena[10];
mifuncion(&micadena);
return 0;
} |