Tamaño de un arreglo de caracteres con una variable en C

publicado por: Anonymous

Lo que deseo es utilizar una variable para indicar el tamaño de un arreglo de caracteres, por ejemplo:

int size = 10;
char vector[size];

Recibo el error:

“Expression must have a constant value”.

¿Qué puedo hacer?

solución

Esto ocurre porque en C (y en algunos compiladores de C++) los arrays deben tener un tamaño que sea constante y conocido en el momento de compilar. Sé que estás definiendo unas variables y que debería ser obvio para el compilador que el tamaño está fijado en 10, pero el compilador no sabe si esa variable va a ser modificada y no puede asumir que es una constante (es una variable al fin y al cabo).

La solución sería definir size como constante usando la palabra reservada const y entonces ya no debería aparecer ese error:

const int size = 10;
char vector[size];

Nota- No he podido comprobar que el código de arriba sea correcto porque mi compilador (de C++) compila sin ningún tipo de errores tu código original (y el de esta respuesta también)


Alternativamente podrías intentar reservar la memoria con malloc, para ello el código sería algo como esto:

int size = 10;
char *vector;

vector = (char *) malloc (sizeof(char) * size);

Y no te olvides de hacer un free(vector) al final para liberar la memoria que reservaste con el malloc o la aplicación tendrá pérdidas de memoria.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *