Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Cómo crear variables de forma dinámica?

Estas en el tema de ¿Cómo crear variables de forma dinámica? en el foro de C/C++ en Foros del Web. ¡Hola! A ver si me podéis ayudar con una cosa muy simple que no sé hacer. No sé muy bien cómo se llama lo que ...
  #1 (permalink)  
Antiguo 23/11/2009, 11:17
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
¿Cómo crear variables de forma dinámica?

¡Hola! A ver si me podéis ayudar con una cosa muy simple que no sé hacer. No sé muy bien cómo se llama lo que quiero hacer, así que lo explico rápido:

Voy a recibir un entero en una variable y ese entero va a ser el número de variables que quiero crear. Por ejemplo, si mi variable vale 3, quiero que se me creen "vble1", "vble2" y "vble3".

Tiene pinta de ser muy simple, pero ahora mismo no caigo...
¡Gracias!
Laura
  #2 (permalink)  
Antiguo 23/11/2009, 11:45
 
Fecha de Ingreso: junio-2008
Mensajes: 87
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: ¿Cómo crear variables de forma dinámica?

no estoy muy seguro de esto que voy a decir. pero la intuicion me indicaria que no es posible crear variables en tiempo de ejecucion en una aplicacion en C o C++ creeria que eso es cosa de lenjuages interpretados tipo php perl phython y esas cosas.

lo que si podrias hacer es crear un puntero a int o void como mas te guste y usar malloc para reservar tanta memoria como necesites: una cosa asi:


Código:
int *pInt: //puntero a int
int i = 5 //cantidad de numeros int que quieres guardar

/*aca le pedimos al sistema que nos de i veces el tamaño de un int donde i es la cantidad de enteros que queres guardar*/
pInt = (int *)malloc( i*sizeof(int) );
y bueno despues ese pInt lo podes acceder como si fuera un array de 0 a i
o podes ir sumando de a 1 al puntero.

lo que si nunca te olvides de usar free() para liberar la memoria cuando ya no la necesites
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.