#include<stdio.h>
#include<stdlib.h>
/* Funcao que recebe os enderecos das variaveis x, y e z. */
/* O simbolo * indica que sera utilizado o conteudo dessas variaveis. */
/* A ausencia desse simbolo indica a utilizacao do endereco das mesmas. */
void passagem_referencia( int * x_interno, int * y_interno, int * z_interno)
{
( * x_interno) ++;
( * y_interno) ++;
* z_interno = * x_interno;
/* Impressao do conteudo dos enderecos passados como referencia
uso obrigatorio do *, caso contrario, serao impressos os enderecos, nao os conteudos */
printf ( "Dentro da funcao \" passagem_referencia\" :\n " ) ; printf ( "x_interno = %d \t Endereco x_interno: %p\n " , * x_interno
, x_interno
) ; printf ( "y_interno = %d \t Endereco y_interno: %p\n " , * y_interno
, y_interno
) ; printf ( "z_interno = %d \t Endereco z_interno: %p\n " , * z_interno
, z_interno
) ; }
int main( void )
{
/* Declaracao de Variaveis e atribuicao de valores */
int x = 5 , y = 10 ;
int z = x + y;
printf ( "======================================\n " ) ; printf ( " Passagem de variaveis por REFERENCIA \n " ) ; printf ( "======================================\n " ) ;
/* Imprime os valores das variaveis x, y e z
antes de entrar na funcao passagem_referencia(). */
printf ( "Antes de entrar na funcao:\n " ) ;
/* Chama a funcao passagem_referencia e transmite os enderecos das variaveis */
passagem_referencia( & x, & y, & z) ;
/* Imprime os valores das variaveis x, y e z
apos o termino da execucao da funcao passagem_referencia(). */
printf ( "Depois de sair da funcao:\n " ) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgoKLyogRnVuY2FvIHF1ZSByZWNlYmUgb3MgZW5kZXJlY29zIGRhcyB2YXJpYXZlaXMgeCwgeSBlIHouICAqLwovKiBPIHNpbWJvbG8gKiBpbmRpY2EgcXVlIHNlcmEgdXRpbGl6YWRvIG8gY29udGV1ZG8gZGVzc2FzIHZhcmlhdmVpcy4gKi8KLyogQSBhdXNlbmNpYSBkZXNzZSBzaW1ib2xvIGluZGljYSBhIHV0aWxpemFjYW8gZG8gZW5kZXJlY28gZGFzIG1lc21hcy4gKi8Kdm9pZCBwYXNzYWdlbV9yZWZlcmVuY2lhKGludCAqeF9pbnRlcm5vLCBpbnQgKnlfaW50ZXJubywgaW50ICp6X2ludGVybm8pCnsKCSgqeF9pbnRlcm5vKSsrOwoJKCp5X2ludGVybm8pKys7Cgkqel9pbnRlcm5vID0gKnhfaW50ZXJubzsKCgkvKiBJbXByZXNzYW8gZG8gY29udGV1ZG8gZG9zIGVuZGVyZWNvcyBwYXNzYWRvcyBjb21vIHJlZmVyZW5jaWEKCXVzbyBvYnJpZ2F0b3JpbyBkbyAqLCBjYXNvIGNvbnRyYXJpbywgc2VyYW8gaW1wcmVzc29zIG9zIGVuZGVyZWNvcywgbmFvIG9zIGNvbnRldWRvcyAqLwoJcHJpbnRmKCJEZW50cm8gZGEgZnVuY2FvIFwicGFzc2FnZW1fcmVmZXJlbmNpYVwiOlxuIik7CglwcmludGYoInhfaW50ZXJubyA9ICVkIFx0IEVuZGVyZWNvIHhfaW50ZXJubzogJXBcbiIsICp4X2ludGVybm8sIHhfaW50ZXJubyk7CglwcmludGYoInlfaW50ZXJubyA9ICVkIFx0IEVuZGVyZWNvIHlfaW50ZXJubzogJXBcbiIsICp5X2ludGVybm8sIHlfaW50ZXJubyk7CglwcmludGYoInpfaW50ZXJubyA9ICVkIFx0IEVuZGVyZWNvIHpfaW50ZXJubzogJXBcbiIsICp6X2ludGVybm8sIHpfaW50ZXJubyk7CglwcmludGYoIlxuIik7Cn0KCmludCBtYWluKHZvaWQpCnsKCS8qIERlY2xhcmFjYW8gZGUgVmFyaWF2ZWlzIGUgYXRyaWJ1aWNhbyBkZSB2YWxvcmVzICAqLwoJaW50IHggPSA1LCB5ID0gMTA7CglpbnQgeiA9IHggKyB5OwoKCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwoJcHJpbnRmKCIgUGFzc2FnZW0gZGUgdmFyaWF2ZWlzIHBvciBSRUZFUkVOQ0lBIFxuIik7CglwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKCXByaW50ZigiXG4iKTsKCgoJLyogSW1wcmltZSBvcyB2YWxvcmVzIGRhcyB2YXJpYXZlaXMgeCwgeSBlIHoKCWFudGVzIGRlIGVudHJhciBuYSBmdW5jYW8gcGFzc2FnZW1fcmVmZXJlbmNpYSgpLiAqLwoJcHJpbnRmKCJBbnRlcyBkZSBlbnRyYXIgbmEgZnVuY2FvOlxuIik7CglwcmludGYoInggPSAlZFxuIiwgeCk7CglwcmludGYoInkgPSAlZFxuIiwgeSk7CglwcmludGYoInogPSAlZFxuIiwgeik7CglwcmludGYoIlxuIik7CgoJLyogQ2hhbWEgYSBmdW5jYW8gcGFzc2FnZW1fcmVmZXJlbmNpYSBlIHRyYW5zbWl0ZSBvcyBlbmRlcmVjb3MgZGFzIHZhcmlhdmVpcyAqLwoJcGFzc2FnZW1fcmVmZXJlbmNpYSgmeCwgJnksICZ6KTsKCgkvKiBJbXByaW1lIG9zIHZhbG9yZXMgZGFzIHZhcmlhdmVpcyB4LCB5IGUgegoJIGFwb3MgbyB0ZXJtaW5vIGRhIGV4ZWN1Y2FvIGRhIGZ1bmNhbyBwYXNzYWdlbV9yZWZlcmVuY2lhKCkuICovCglwcmludGYoIkRlcG9pcyBkZSBzYWlyIGRhIGZ1bmNhbzpcbiIpOwoJcHJpbnRmKCJ4ID0gJWRcbiIsIHgpOwoJcHJpbnRmKCJ5ID0gJWRcbiIsIHkpOwoJcHJpbnRmKCJ6ID0gJWRcbiIsIHopOwoKCXJldHVybiAwOwp9Cg==