Quando passamos variáveis como argumentos para serem alteradas dentro de uma função ou procedimento,
e seus valores não serem descartados, passamos esses argumentos por referência. Sendo assim, estamos
passando uma referência de uma variável para que o conteúdo da mesma possa ser alterado.
A passagem por referência utiliza o operador (&) antes do nome do parâmetro.
Sintaxe 1
nome_procedimento(&arg1, &argN);
Sintaxe 2
nome_funcao(&arg1, &argN);
Onde
arg1..N: argumentos passados
Tanto a função quanto o procedimentos devem ter seus parâmetros declarados como ponteiros para receber
a referência de variáveis. Isso é feito utilizando o operadore *.
Sintaxe 3
void nome_procedimento(tipo_dado_param *nome_param1, tipo_dado_param *nome_paramN)
{
//corpo procedimento
}
Sintaxe 4
tipo_retorno nome_funcao(tipo_param nome_param1, tipo_param paramN)
{
//corpo da funcao
retorn valor;
}
tipo_retorno: Tipo de dado retornado pela função
tipo_param: Tipos de dado do parâmetro.
param1..N: parâmetros separados por (,)
Exemplo 2
#include <stdio.h>
void soma(int *a, int *b)
{
*a = 100;
*b = 200;
printf("durante a:%d b:%d\n", *a,*b);
}
int main()
{
int a=1,b=2;
printf("antes a:%d b:%d\n", a,b);
soma(&a,&b);
printf("depois a:%d b:%d\n", a,b);
}
Saída
antes a:1 b:2
durante a:100 b:200
depois a:100 b:200