#include #include #include /* exemplo de funcao que chama outra funcao: fun2 que chama fun1 */ int fun1( int *Endj, int *Endk); // Prototipos int fun2( int *Endj, int *Endk); int main(){ int j, k; // declara caixinhas j e k inteiras printf("Digite um valor inteiro e ENTER\n"); // mostra na tela scanf("%d", &j); // ler j= 777, por exemplo printf("Valor de j lido e' %d\n", j); // mostra na tela valor de 777 k=999; j=fun2( &j, &k); // &j é Endereco da caixinha j printf("Valor de j = %d e k= %d, depois de chamar fun2 \n", j, k); // mostra na tela valor de j= 777, k= 111, alterado pela fun1 system("pause"); return 0; }/************************************************************************/ int fun1( int *Endj, int *Endk){ // fun1 recebe 2 enderecos de 2 caixas do main *Endk=111; // *Endk significa "conteudo no Endereco Endk", // caixinha k do main recebe 111, // pois a chamada e' fun1(Endj,Endk) na fun2 // Nao altera caixinha j do main printf("Dentro de func1 j= %d e k= %d\n", *Endj, *Endk); // mostra j= 777 e k= 111 return *Endj; // retorna j sem alterar }/***********************************************************************/ int fun2( int *Endj, int *Endk){ // fun2 recebe 2 enderecos de 2 caixas do main int jlocal; // so existe dentro da fun2 *Endk=222; // altera k do main pois a chamada e' fun2(&j,&k) no main // Nao altera j printf("Dentro de func2 j= %d e k= %d\n", *Endj,*Endk); // mostra 777 e 222, ambos do main /* a seguir chamada da funcao fun1 */ jlocal=fun1(Endj, Endk); // chama fun1 sem & pois Endj e Endk são // enderecos das caixinhas j e k do main printf ("jlocal= %d \n", jlocal); // mostra jlocal= 777 return jlocal; }/***********************************************************************/ /* saida do programa final Digite um valor inteiro e ENTER Valor de j lido e' 777 Dentro de func2 j= 777 e k= 222 Dentro de func1 j= 777 e k= 111 jlocal= 777 Valor de j = 777 e k= 111, depois de chamar fun2 */