On Fri, 14 Mar 2003 09:53:38 -0300
apsantos <[EMAIL PROTECTED]> wrote:
> Gostaria de saber porque a rotina abaixo n�o funciona para alternar o
> valor de duas vari�veis,

Em C vc s� pode passar vari�veis simples por valor. Para fazer o que vc
quer e ter os valores replicados dentro da rotina principal, ter� que
fazer passagem por refer�ncia, usando refer�ncias e ponteiros.

Assim: quando vc chama alternar(x,y), � passada para a fun��o alternar()
n�o o endere�o das vari�veis x e y em si, mas o VALOR destas vari�veis,
como se fosse uma c�pia delas. E quando vc sai de alternar(), estas
c�pias s�o automaticamente destru�das. Por isso s� a segunda alternativa
funciona, pois ela n�o passa os valores e sim refer�ncias para os
endere�os de mem�ria onde est�o armazenados os x e y originais, e todas
as altera��es ocorrer�o nestes endere�os de mem�ria passados por estas
refer�ncias.

Se vc colocar o printf() dentro da rotinar alternar() note que funciona,
mas estes valores n�o ser�o replicados dentro de main(). Entao, vc ter�
q fazer passagem por refer�ncia, como fez na segunda tentativa.

thiago

--
Knowledge is power -- knowledge shared is power lost. (Crowley)

Assinantes em 14/03/2003: 2228
Mensagens recebidas desde 07/01/1999: 204224
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: 
            mailto:[EMAIL PROTECTED]

Responder a