Exemplo: Passagem por Referência e Passagem por Valor

21/10/2013 18:14

//Erick Vivan
#include <stdio.h>
#include <stdlib.h>

void PASSAGEM_POR_REFERENCIA(int *a, int *b)
{
     int aux;
     aux = *a;
     *a = *b;
     *b = aux;
}
void PASSAGEM_POR_VALOR(int a, int b)
{
     int aux;
     aux = a;
     a = b;
     b = a;
}

main()
{
    int opcao, A = 2, B = 5;
    printf("Digite: \n\n");
    printf("1 - para efetuar passagem por referencia\n");
    printf("2 - para efetuar passagem por valor\n\n");
    printf("Opcao: ");
    scanf("%d", &opcao);
    switch(opcao)
    {
        case 1:
             printf("Antes de chamar a funcao:\n");
             printf("A = %d \nB = %d\n\n", A, B);
             printf("Depois de chamar a funcao:\n");
             PASSAGEM_POR_REFERENCIA(&A, &B);
             printf("A = %d \nB = %d\n\n", A, B);
             break;
        case 2:
             printf("Antes de chamar a funcao:\n");
             printf("A = %d \nB = %d\n\n", A, B);
             printf("Depois de chamar a funcao:\n");
             PASSAGEM_POR_VALOR(A, B);
             printf("A = %d \nB = %d\n\n", A, B);
             break;
        default:
             printf("Opcao invalida!\n\n");
    }
    system("pause");
}