C/Visual C - Como sumar valor de posiciones de memoria?????

 
Vista:

Como sumar valor de posiciones de memoria?????

Publicado por TSW (5 intervenciones) el 22/02/2011 11:24:36
Hola a todos, mi problema es el siguiente : tengo este codigo que me da error:
#include <stdio.h>
#include <conio.h>

main()
{
clrscr(); //limpio pantalla

int a = 2; //declaro variables
int b = 2;

int *p; //declaro punteros
int *z;
int x; //declaro variable

p = &a; // vale la posicion de memoria de A Ejemplo : 16123
z = &b; //vale la posicion de memoria de B Ejemplo : 16125

x = p + z; // vale a la posicion de memoria de A + posicion de memoria de B

-------- ¿ X = 16123 + 16125 o no ???¿¿¿ -----------

printf("%d %d %d ",p,z,x); //presento en pantalla

getchar(); //pulso tecla

}

Mi logica me dice que X tiene que ser 16123 +16125 = 32248, pero me da error, no se como representar esa suma, simplemente que me haga esa suma de esos valores y me da error el programa, no me sale. Cual es el error??

Seguro que es algo sencillo, pero estoy empezando con C++. Gracias a todos !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como sumar valor de posiciones de memoria?????

Publicado por Tom (619 intervenciones) el 22/02/2011 12:35:53
Asumiendo (porque no nos lo cuentas) que da error (¿ cual ?) en

x = p + z;

es perfectamente normal. Una variable puntero en C _no_ es una variable numérica, aunque permita ciertas operaciones aritméticas.

En todo caso, si tu compilador traga, haz un cast de cada puntero, al tipo equivalente en tu máquina (int, long, lon long, ...).

x = (long)p + (long)z;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como sumar valor de posiciones de memoria?????

Publicado por TSW (5 intervenciones) el 22/02/2011 14:24:19
Ok , perdona por no especificar mejor. Te explico lo que quiero hacer. Estoy empezando a programar en C y voy capitulo a capitulo en un libro. Antes programaba en Quick Basic, pero queria avanzar mas y me pase a C. Voy por el capitulo de los punteros, entonces ahora queria hacer un ejercicio.

Se que al poner :

INT a = 2;
printf("Posicion de A ",&a);

me sale en pantalla DONDE esta colocada la variable A.

Ok, ¿que se me ocurrio a mi? Pues me dije : "Pues como la posicion de memoria es un numero, quiero hacer una suma con LOS NUMEROS de dos posiciones de memoria" , y esa es la tonteria que quiero hacer, por que con esas tonterias va uno aprendiendo , no crees?? y conciendo mas el lenguaje.

Por ejemplo

INT a = 2; Posicion 16234
INT b = 2; Posicion 16235

prinft("total %d ",&a + &b); 16234 + 16235 = 32469

mi teoria es que me salga en pantalla 32469

este codigo le faltan cosas , pero la idea es esa, imagina que la posicion de A es 16234 y la de B es 16235 , pues yo quiero IMPRIMIR en la pantalla la suma de esos dos valores, tengo que buscar la forma de CAPTURAR esa direccion y pasarla a NUMERO para luego hacer la suma, pero no se como. Muchas gracias !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar