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]