Estoy tratando de crear una nueva matriz de enteros que se deriva de una cadena de caracteres. Por ejemplo:Devolución de matrices/punteros desde una función
char x[] = "12334 23845 32084";
int y[] = { 12334, 23845, 32084 };
Tengo problemas para entender cómo devolver una matriz (que entiendo que no es posible) desde una función.
originalmente me trataron:
/* Convert string of integers into int array. */
int * splitString(char string[], int n)
{
int newArray[n];
// CODE
return (newArray);
}
int main(void)
{
int x[n] = splitString(string, n);
return (0);
}
después supe que no se puede hacer esto.
¿Cómo funcionan los punteros en lo que respecta a las funciones?
Gracias.
Este es el método preferido. En el 99% de los casos, no tiene sentido devolver ningún tipo de puntero desde una función. – Lundin
Derecha. Como se menciona en otras respuestas, puede usar 'malloc (n * sizeof (int))' en su función para asignar la memoria y devolver ese puntero, pero luego siempre debe recordar eventualmente 'liberar' la memoria también. Dado que el 'malloc' está oculto en una función en un nivel diferente de abstracción, usted es propenso a olvidar. Por lo tanto, es mejor asignar la memoria y pasar el puntero a la función, usar el resultado y luego liberar la memoria para que pueda emparejar fácilmente su 'malloc's con su' libre's. – JCooper
@JCooper: la persona que llama también puede asignar esa memoria desde un grupo, fuera de la pila, o donde quiera que lo quiera colocar, pero la función no puede. – Puppy