home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / CataniaB / teach-act / esempi / Puntatori / rif.c < prev   
C/C++ Source or Header  |  1997-04-09  |  1KB  |  47 lines

  1. #include <stdio.h>
  2.  
  3. /* Passaggio per valore come visto fino ad ora: */
  4.  
  5. void p(int x)
  6.  {  
  7.    x=x+1;
  8.    printf("%d",x); 
  9.  }
  10.  
  11. main()
  12.  {
  13.   int x=6;
  14.  
  15.   p(x);   /* poiche' x "vale" 6: equivale a p(6) !!! */
  16.  
  17.  }
  18.  
  19. ---------------------------------------------------------------------------
  20. /* Passaggio per valore che simula quello per riferimento.
  21.  
  22.  
  23. void q(int * x) /* argomenti di tipo puntatore a intero (tipo  
  24.                    della variabile che vogliamo modificare come 
  25.                    side effect 
  26.  {
  27.    *x=(*x) + 1;
  28.  } 
  29.  
  30. main()
  31. {
  32.   int x=6;
  33.   int * p;         /* puntatore a intero */
  34.   
  35.   p=&x;
  36.   printf("%p",p);  /* stampa un indirizzo, ad es: 0xbffff630 */
  37.  
  38.   q(p);          /* oppure direttamente q(&x),  equivale a q(0xbffff630) 
  39.                     cioe' il passaggio e' sempre per valore!! 
  40.                     Cambia il tipo del valore (..un indirizzo) e il modo 
  41.                     di usarlo dentro q (si modifica il contenuto della 
  42.                     locazione corrispondente). 
  43.                   */   
  44.  
  45.   printf("%d",x);  /* oppure printf("%d",*y): stampa 7 */
  46. }
  47.