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]
