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 / punta.c < prev    next >
C/C++ Source or Header  |  1997-04-06  |  1KB  |  58 lines

  1. #include <stdio.h>
  2.  
  3. /* Puntatori:  un tipo particolare di valori che denotano "indirizzi" 
  4.                di locazione (valori sinistri) */ 
  5.  
  6. main()
  7. {
  8.  int x,y;        
  9.  int *ptr;      /* ptr indirizzo ad una locazione di tipo intero */
  10.  
  11.  /* IL valore di p e' un indirizzo. Al momento della dichiarazaione 
  12.   * viene inizializzato con NULL (=0). */
  13.  
  14.  printf("\n %p",ptr);           /* %p --> tipo puntatore */
  15.  
  16. /* cioe' 0 : *p (il contenuto di p) non e' definito! */
  17.  
  18.  /* Occorre "allocare" una cella per p prima di poter usare il suo 
  19.   * indirizzo ad esempio usando l'operatore "&" */
  20.  
  21.  x=0;
  22.  
  23.  ptr=&x;  /*  &x=indirizzo della locazioneádi x, 
  24.           *   ora ptr punta  alla  locazione di x*/
  25.  
  26.  y=*ptr; 
  27.  
  28.  printf("\n %p %d %p %d %d",&x,x,ptr,*ptr,y);  
  29.                                              
  30. /* output: 0xbffff660 0  0xbffff660 0 0 */ 
  31.  
  32.  x++; /* modifico valore di x ma anche di *ptr!! */  
  33.  
  34.  printf("\n %p %d %p %d",&x,x,ptr,*ptr);  
  35.  
  36. /* output: 0xbffff660 1  0xbffff660 1 */ 
  37.  
  38. /* viceversa*/
  39.  
  40.  *ptr=6; /* modifico valore di *ptr e quindi anche  di x! */  
  41.  
  42.  printf("\n %p %d %p %d",&x,x,ptr,*ptr);  
  43.  
  44. /* output: 0xbffff660 6  0xbffff660 6 */ 
  45.  
  46.  ptr=&y;    /* ora ptr punta a y */
  47.  
  48.  ++*ptr;   /* incrementa il valore di *ptr(cioe' y) di 1 */
  49.  
  50.  (*ptr)++; /* incrementa il valore di *ptr(cioe' y) di 1 */ 
  51.  
  52.  printf("\n %d %d",*ptr,y);
  53.  
  54. /* output: 2 2 */ 
  55. }
  56.  
  57.  
  58.