Pessoal

Gostaria de saber porque a rotina abaixo n�o funciona para alternar o
valor de duas vari�veis,
e a que vem logo a seguir sim. Em outras linguagens, como Pascal ou
Fortran, essa mesma abordagem funcionaria. Ser� isso devido � alguma
caracter�stica do C no que se refere ao uso da mem�ria ou as outras
linguagens agem da mesma forma, por�m as coisas se passando como se
fossem diferentes?

Desculpem-me o que para muitos seja uma quest�o ing�nua, mas � que
realmente eu queria entender esse ponto.
Sugest�es de sites ou textos onde essas quest�es possam ser esclarecidas
ser�o bem vindas.

Obrigado desde j�.

Alfredo


/*
  Programa troca0.c
  A rotina alternar n�o funciona, o que s� ocorrer�  com o
  uso de ponteiros. Veja-se troca1.c
*/
main()
{
int x, y;
x = 5;
y = 7;

printf("Valor de a: %d\n", x);
printf("Valor de b: %d\n", y);

alternar(x, y);

printf("\nDepois da troca\n"); /* N�o ocorre a troca */

printf("Valor de a: %d\n", x);
printf("Valor de b: %d\n", y);

}

alternar(x, y)
int x, y;
{
  int temp;
  temp = x;
     x = y;
     y = temp;
}

A rotina abaixo � a que funciona.

/*
  Programa troca1.c
*/
main()
{
int x, y;
x = 5;
y = 7;

printf("Valor de a: %d\n", x);
printf("Valor de b: %d\n", y);

alternar(&x, &y);

printf("\nDepois da troca\n");

printf("Valor de a: %d\n", x);
printf("Valor de b: %d\n", y);

}

alternar(x, y)
int *x, *y;
{
  int temp;
  temp = *x;
    *x = *y;
    *y = temp;
}





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

Responder a