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;
}