IAEF6 – Exemplos de programas envolvendo funções com passagem de parâmetros

a) A função trocaValores() realiza a troca de valores entre as variáveis globais xpto1 e xpto2 usando uma variável local aux.

#include <stdio.h>
#include <stdlib.h>

int xpto1, xpto2; //Variáveis globais. Acessíveis em todo o programa

void trocaValores(){
    int aux;  //Variável local. Acessível apenas nesta função.

    aux = xpto1;
    xpto1 = xpto2;
    xpto2 = aux;
}


int main() {
    printf("\nInforme valor para XPTO1: ");
    scanf("%d",&xpto1);

    printf("\nInforme valor para XPTO2: ");
    scanf("%d",&xpto2);

    trocaValores();

    printf("\nValor de XPTO1 depois do trocaValores: %d", xpto1);
    printf("\nValor de XPTO2 depois do trocaValores: %d", xpto2);
    return 0;
}

b) Exemplifica função com parâmetros. No caso, a função soma(n1, n2) e ilustra várias formas de executá-la.

#include <stdio.h>
#include <stdlib.h>

//Variáveis globais
int g1, g2, g3;

/**
Esta função retorna a soma de dois números passados como parâmetro (n1 e n2).
*/
int soma(int n1, int n2) {
   int r;  //variável local

   r = n1 + n2;
   return r;
}


int main() {
    printf("\nA soma de 10 com 20 eh %d", soma(10,20));
    g1 = 100;
    g2 = 200;
    printf("\nA soma de g1 com g2 eh %d", soma(g1,g2));
    g3 = soma(1000,2000);
    printf("\nA soma de 1000 com 2000 eh %d", g3);
    return 0;
}

c) O código a seguir exemplifica passagem de parâmetros para função nas formas: por valor e por referência (usando ponteiro).

#include <stdio.h>
#include <stdlib.h>

//Variáveis globais
int g1, g2, g3;

/**
Processa números passados por parâmetro.
n1 e n2 são passados por valor.
n3 é passado por referência
*/
void processaNumeros(int n1, int n2, int* n3) {
    n1 *= 10;
    n2 *= 100;
    *n3 *= 1000;   //por ser um parâmetro de referência, ao alterar, altera-se a variavel passada em sua posição.
    printf("\nDentro de processaNumeros  n1 = %d - n2 = %d - n3 = %d", n1, n2, *n3);
}


int main() {
    g1 = 1;
    g2 = 2;
    g3 = 3;
    //g1 e g1 form passados por valor e g3 foi passado por referência.
    processaNumeros(g1, g2, &g3);
    printf("\n\nNo main.... g1 = %d - g2 = %d - g3 = %d", g1, g2, g3);
    return 0;
}