fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4.  
  5. /* Funcao que recebe os enderecos das variaveis x, y e z. */
  6. /* O simbolo * indica que sera utilizado o conteudo dessas variaveis. */
  7. /* A ausencia desse simbolo indica a utilizacao do endereco das mesmas. */
  8. void passagem_referencia(int *x_interno, int *y_interno, int *z_interno)
  9. {
  10. (*x_interno)++;
  11. (*y_interno)++;
  12. *z_interno = *x_interno;
  13.  
  14. /* Impressao do conteudo dos enderecos passados como referencia
  15. uso obrigatorio do *, caso contrario, serao impressos os enderecos, nao os conteudos */
  16. printf("Dentro da funcao \"passagem_referencia\":\n");
  17. printf("x_interno = %d \t Endereco x_interno: %p\n", *x_interno, x_interno);
  18. printf("y_interno = %d \t Endereco y_interno: %p\n", *y_interno, y_interno);
  19. printf("z_interno = %d \t Endereco z_interno: %p\n", *z_interno, z_interno);
  20. printf("\n");
  21. }
  22.  
  23. int main(void)
  24. {
  25. /* Declaracao de Variaveis e atribuicao de valores */
  26. int x = 5, y = 10;
  27. int z = x + y;
  28.  
  29. printf("======================================\n");
  30. printf(" Passagem de variaveis por REFERENCIA \n");
  31. printf("======================================\n");
  32. printf("\n");
  33.  
  34.  
  35. /* Imprime os valores das variaveis x, y e z
  36. antes de entrar na funcao passagem_referencia(). */
  37. printf("Antes de entrar na funcao:\n");
  38. printf("x = %d\n", x);
  39. printf("y = %d\n", y);
  40. printf("z = %d\n", z);
  41. printf("\n");
  42.  
  43. /* Chama a funcao passagem_referencia e transmite os enderecos das variaveis */
  44. passagem_referencia(&x, &y, &z);
  45.  
  46. /* Imprime os valores das variaveis x, y e z
  47. apos o termino da execucao da funcao passagem_referencia(). */
  48. printf("Depois de sair da funcao:\n");
  49. printf("x = %d\n", x);
  50. printf("y = %d\n", y);
  51. printf("z = %d\n", z);
  52.  
  53. return 0;
  54. }
  55.  
Success #stdin #stdout 0s 5512KB
stdin
Standard input is empty
stdout
======================================
 Passagem de variaveis por REFERENCIA 
======================================

Antes de entrar na funcao:
x = 5
y = 10
z = 15

Dentro da funcao "passagem_referencia":
x_interno = 6 	 Endereco x_interno: 0x7fff3cafc76c
y_interno = 11 	 Endereco y_interno: 0x7fff3cafc770
z_interno = 6 	 Endereco z_interno: 0x7fff3cafc774

Depois de sair da funcao:
x = 6
y = 11
z = 6