next up previous contents index
Next: Input e Output su Up: I puntatori Previous: Dichiarazione di un puntatore   Indice   Indice analitico


Operatori sui puntatori

Sono definiti tre diversi operatori per le operazioni con puntatori:

L'operatore

&
Ha l'impiego seguente:
#include<stdio.h>

int main(int argc , char *argv[])
{

	int *miopunt_intero;
	int mioint = 7;

	miopunt_intero = &mioint;

	printf("%x", &miopunt_intero );

}/*  main   */

Questo breve programma stampa, sul mio sistema: bffff974 Ovvero, l'indirizzo di memoria in cui è conservata la variabile

mioint.

L'operatore di dereferenziazione

*
serve, invece, per passare dal puntatore all'oggetto puntato in memoria.
     1	#include<stdio.h>
     2
     3	int main(int argc , char *argv[])
     4	{
     5
     6	  int *miopunt_intero;
     7	  int mioint = 7;
     8	  miopunt_intero = & mioint;
     9
    10	  printf("%x", &miopunt_intero );
    11	}

Il codice sopra stampa: 7

Il terzo operatore (operatore freccia)

->
é utile per fare riferimento agli elementi di una struct puntata; per es., se si é definita la struct:
struct indirizzo{
	char citta[128];
	char via[128];
	int civico[5];
}
struct indirizzo mioind;

ed un puntatore alla struct:

struct indirizzo *punt;
punt = & mioind;

si può accedere agli elementi della struct facendo:

mia_citta = punt-> citta;
mia_via = punt-> via;
mia_citta = punt-> civico;

Si noti che l'operatore -> equivale alla dereferenziazione del puntatore a struct, più il passaggio all'elemento; ovvero:

 (* punt).citta;
equivale a:

 punt -> citta;

L'operatore -> viene spesso utilizzato nelle linked lists per accedere, come pure avremo modo di mostrare nel seguito, ai singoli campi di struct puntate da appositi puntatori; questi saranno, ovviamente, puntatori a struct.


next up previous contents index
Next: Input e Output su Up: I puntatori Previous: Dichiarazione di un puntatore   Indice   Indice analitico
blacksheep & 2006-11-22