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 (&) prefixado ao nome do parâmetro.
Sintaxe
nome_procedimento(&arg1, &argN);
Sintaxe
nome_funcao(&arg1, &argN);
Onde
&arg1..N: argumentos passados por referência
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> *nome_param1, <tipo_dado> *nome_paramN)
{
//corpo procedimento
}
Sintaxe 4
tipo_retorno nome_funcao(<tipo_dado> *nome_param1, <tipo_dado> *nome_paramN)
{
//corpo da funcao
retorn valor;
}
tipo_retorno: Tipo de dado retornado pela função
<tipo_dado>: Tipos de dado do parâmetro.
nome_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