Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Akumadie en 22 Noviembre 2016, 21:55 pm



Título: Consulta de un noob sobre vectores dinamicos para char
Publicado por: Akumadie en 22 Noviembre 2016, 21:55 pm
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
  1. char* devolverChar(const int a) {
  2. char probando[a];
  3. return *probando;
  4. };
  5.  

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


Título: Re: Consulta de un noob sobre vectores dinamicos para char
Publicado por: ivancea96 en 22 Noviembre 2016, 22:37 pm
Una constante, no const.
Una constante es, por ejemplo, que pongas:
Código
  1. char var[56];
Ese 56 es una constante.

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

C:
Código
  1. char* devolverChar(int a) {
  2. char *probando = (char*) malloc(sizeof(char) * a);
  3. return probando;
  4. }

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

C:
Código
  1. char* ret =  devolverChar(123);
  2. // Aquí utilizas esa cadena todo lo que quieras...
  3. free(ret);


Título: Re: Consulta de un noob sobre vectores dinamicos para char
Publicado por: Akumadie en 23 Noviembre 2016, 03:08 am
Muchas gracias por la respuesta ;D