Autor
|
Tema: ¿Esto se puede en C? (Leído 2,205 veces)
|
NeoB
Desconectado
Mensajes: 69
|
Buenas. Me pregunto si en C hay alguna forma de asignar a una variable el valor de otra como nombre, por ejemplo, si tengo una cadena (introducida por el usuario o no) que contiene "var1", puedo crear una variable que se llame var1; o si se puede acceder a una variable llamada var2, a través de una cadena como "var2". -> He buscado en google pero... -> Gracias.
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Es un poco complicado pero no imposible , lo que sí es que no puedes declarar variables en mitad de la ejecución con un identificador que no estuviese en el código, es decir yo no puedo hacer que el programa me pida un nombre y asignar ese nombre a un identificador de variable , pero si puedo crear una variable para referirme a ese nombre no se si me explico¿Para que necesitas lo que pides?
¡Un saludo!
|
|
|
En línea
|
Regístrate en
|
|
|
NeoB
Desconectado
Mensajes: 69
|
Era solo por curiosidad... Gracias.
|
|
|
En línea
|
|
|
|
Oblivi0n
Desconectado
Mensajes: 392
Odio las ranas.
|
según dices, lo que podrías hacer es un array de punteros, a medida que el usuario introduce var1,var2,...,varN , vas creando nuevas variables, luego si quiere acceder a una variable escribiendo varN, buscaría en el array la n-esima posición. Siento la mala explicación, si eso luego hago un codigo
|
|
|
En línea
|
|
|
|
NeoB
Desconectado
Mensajes: 69
|
¿Pero eso incluiría el tener que ir creando las variables en tiempo de ejecución, para ir luego guardando su dirección en el array, no? ¿Podrías incluir algo de código porfavor?
|
|
« Última modificación: 27 Julio 2012, 15:08 pm por NeoB »
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! como ya te explico avesudra no podes crear variables en tiempo de ejecucion; si podes reservar memoria para trabajar con él. Para hacer lo que queres tenes que seguir el consejo de Oblivi0n(crear un array de punteros), y ademas tendrias que tener una variable para almacenar el valor de lo que creas. Ejemplo simple: #define MAX_NAME 10 int main() { char *nameVar; int dato; nameVar =malloc(sizeof (char) * MAX_NAME ); printf("Ingrese nombre de variable\n"); return 0; }
Variantes: podrias crear un array de estructuras dinamico. Generalizar el "dato" de tipo void * Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Buenas. Me pregunto si en C hay alguna forma de asignar a una variable el valor de otra como nombre, por ejemplo, si tengo una cadena (introducida por el usuario o no) que contiene "var1", puedo crear una variable que se llame var1; o si se puede acceder a una variable llamada var2, a través de una cadena como "var2".
Hola. En tiempo de ejecución y en forma directa como infiero de tu mensaje, no es posible. El compilador convierte los identificadores, tales como nombres de variables, en direcciones de memoria; y este proceso no es reversible. Pero sí podes emularlo mediante un array para entonces acceder por el nombre , como ya te han sugerido. Saludos.
|
|
|
En línea
|
|
|
|
|
|