Consulta de un noob sobre vectores dinamicos para char

Iniciado por Akumadie, 22 Noviembre 2016, 21:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Akumadie

Tengo una duda que no puedo lograr solucionar, y lo peor es que debe ser bastante sensilla.
Necesito crear un char x[variable].
La "variable" debe provenir a través de un parámetro de función , y el programa me dice que debe ser una constante. El problema es que aún siendo el parámetro enviado declarado "const" me sigue dando el mismo error.


Código (cpp) [Seleccionar]

char* devolverChar(const int a) {
char probando[a];
return *probando;
};


el error me dice que la variable a debe ser una constante...
Ayuda por favor!

ivancea96

Una constante, no const.
Una constante es, por ejemplo, que pongas:
Código (cpp) [Seleccionar]
char var[56];
Ese 56 es una constante.

Para un vector dinámico, tendrás que trabajar con memoria dinámica:
C++:
Código (cpp) [Seleccionar]
char* devolverChar(int a) {
char *probando = new char[a];
return probando;
}


C:
Código (cpp) [Seleccionar]
char* devolverChar(int a) {
char *probando = (char*) malloc(sizeof(char) * a);
return probando;
}


Luego, tendrás que liberar al memoria que reservaste con new/malloc. Para ello, delete/free:
C++:
Código (cpp) [Seleccionar]
char* ret =  devolverChar(123);
// Aquí utilizas esa cadena todo lo que quieras...
delete[] ret; // Como son varias, ponemos delete[]. Si fuera solo 1, solo se pondría delete


C:
Código (cpp) [Seleccionar]
char* ret =  devolverChar(123);
// Aquí utilizas esa cadena todo lo que quieras...
free(ret);