Pascal/Turbo Pascal - Problemas con punteros

 
Vista:

Problemas con punteros

Publicado por Tom (4 intervenciones) el 29/01/2003 22:00:31
Considerando el siguiente programa:

PROGRAM Direccion(output)
TYPE
PInt = ^Integer;
VAR
Uno, Dos : Integer;
X, Y : PInt;
PROCEDURE Inter (VAR A : PInt; B : PInt);
VAR Tmp : PInt;
BEGIN
Tmp := A;
A := B;
B := Tmp;
END;
BEGIN
Uno := 1;
Dos := 2;
X := @Uno;
Y := @Dos;
Inter(X,Y);
X^ := 2;
Y^ := 1;
writeln(Uno, Dos:2);
END.

Me gustaria saber por que el resultado es 1 , 1. Me lio mucho con los punteros y cuando los pasa a el procedimiento porque parece que aunque se pasen por valor tambien afecta al resto de programa o.
Gracias de antemano! un saludo!
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:Problemas con punteros

Publicado por César Augusto Navarro Gómez (182 intervenciones) el 29/01/2003 22:54:34
Es fácil anteponle un var al parametro "B" y listo, como lo pasas por valor no se modifica y se pierde una dirección.

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:Problemas con punteros

Publicado por Tom (1 intervención) el 30/01/2003 01:12:47
Qué diferencia hay entre pasar a un procedimiento :
puntero, puntero^, @variable a la que apunta el puntero
en caso de que se pase como valor o como referencia.
a mi me da la impresion que si se pasa como valor puntero y puntero^ no se producen cambios fuera del procedimiento, en cambia si se pasa como @variable tanto si es el parametro va como valor o referencia se producen cambios.
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

RE:Problemas con punteros

Publicado por Tom (4 intervenciones) el 30/01/2003 01:12:53
Qué diferencia hay entre pasar a un procedimiento :
puntero, puntero^, @variable a la que apunta el puntero
en caso de que se pase como valor o como referencia.
a mi me da la impresion que si se pasa como valor puntero y puntero^ no se producen cambios fuera del procedimiento, en cambia si se pasa como @variable tanto si es el parametro va como valor o referencia se producen cambios.
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

RE:Problemas con punteros

Publicado por buriso (1 intervención) el 13/02/2003 20:14:07
porque al pasarle @variable le estas pasando la direccion que esa variable ocupa en memoria, entonces ya sea por valor o por referencia si cambias el valor de esa variable dentro del procedimiento, tambien lo vas a hacer fuera de este aunque la hayas pasado por valor.
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