Este tipo de chamada de funcao tem o nome de "chamada por referencia". Estenome vem do fato de que, neste tipo de chamada, nao se passa para a funcao os valores dasvariaveis, mas sim suas referencias (a funcao usa as referencias para alterar os valores dasvariaveis fora da funcao).O C so faz chamadas por valor. Isto e bom quando queremos usar os parametrosformais a vontade dentro da funcao, sem termos que nos preocupar em estar alterando osvalores dos parametros que foram passados para a funcao. Mas isto tambem pode ser ruim asvezes, porque podemos querer mudar os valores dos parametros fora da funcao tambem. OC++ tem um recurso que permite ao programador fazer chamadas por referencia. Haentretanto, no C, um recurso de programacao que podemos usar para simular uma chamadapor referencia.Quando queremos alterar as variaveis que sao passadas para uma funcao, nos podemosdeclarar seus parametros formais como sendo ponteiros. Os ponteiros sao a "referencia" queprecisamos para poder alterar a variavel fora da funcao. O unico inconveniente e que, quandousarmos a funcao, teremos de lembrar de colocar um & na frente das variaveis que estivermospassando para a funcao. Veja um exemplo:#include <stdio.h>void Swap (int *a,int *b);void main (void){int num1,num2;num1=100;num2=200;Swap (&num1,&num2);printf ("\n\nEles agora valem %d %d\n",num1,num2);}void Swap (int *a,int *b){int temp;temp=*a;*a=*b;62*b=temp;}Nao e muito dificil. O que esta acontecendo e que passamos para a funcao Swap oendereco das variaveis num1 e num2. Estes enderecos sao copiados nos ponteiros a e b.Atraves do operador * estamos acessando o conteudo apontado pelos ponteiros e modificandoo.Mas, quem e este conteudo? Nada mais que os valores armazenados em num1 e num2,que, portanto, estao sendo modificados!Espere um momento... sera que nos ja nao vimos esta estoria de chamar uma funcaocom as variaveis precedidas de &? Ja! E assim que nos chamamos a funcao scanf(). Masporque? Vamos pensar um pouco. A funcao scanf() usa chamada por referencia porque elaprecisa alterar as variaveis que passamos para ela! Nao e para isto mesmo que ela e feita? Elale variaveis para nos e portanto precisa alterar seus valores. Por isto passamos para a funcao oendereco da variavel a ser modificada!AUTO AVALIACAOVeja como voce esta:Escreva uma funcao que receba duas variaveis inteiras e "zere" o valor das variaveis.Use o que voce aprendeu nesta pagina para fazer a implementacao.Vetores como Argumentos de FuncoesQuando vamos passar um vetor como argumento de uma funcao, podemos declarar afuncao de tres maneiras equivalentes. Seja o vetor:int matrx [50];e que queiramos passa-la como argumento de uma funcao func(). Podemos declararfunc() das tres maneiras seguintes:void func (int matrx[50]);void func (int matrx[]);void func (int *matrx);Nos tres casos, teremos dentro de func() um int* chamado matrx. Ao passarmos umvetor para uma funcao, na realidade estamos passando um ponteiro. Neste ponteiro earmazenado o endereco do primeiro elemento do vetor. Isto significa que nao e feita umacopia, elemento a elemento do vetor. Isto faz com que possamos alterar o valor dos elementosdo vetor dentro da funcao.Um exemplo disto ja foi visto quando implementamos a funcao StrCpy().AUTO AVALIACAOVeja como voce esta.Escreva um programa que leia um vetor de inteiros pelo teclado e o apresente na tela.Crie uma