Programmazione.html.it

  Home page

   Guida Base

   Guida al Java

   Guida al C

   Guida al C++

   Guida al Delphi

   Guida a VB .NET

   Guida al Visual Basic

   Guida al Python

   Guida al'UML

  Forum di discussione
  HTML.it


Guida al linguaggio C
  LEZIONE:  Puntatori ed Array


Una digressione su array e puntatori potrebbe portare via moltissimo tempo; in questo ambito ci limitiamo ad accennare alla correlazione tra i due strumenti a disposizione nel linguaggio C.

L'aspetto che accomuna i puntatori e gli array è sostanzialmente il fatto che entrambi sono memorizzati in locazioni di memoria sequenziali, ed è quindi possibile agire su un array (se lo si vede come una serie di blocchi ad indirizzi di memoria sequenziali) come se si stesse agendo su un puntatore (e viceversa); ad esempio se dichiariamo un array "alfa" ed un puntatore "pointer":

// definisco un array ed una variabile intera
int alfa[20], x;

// creo il puntatore;
int *pointer;

// puntatore all'indirizzo di a[0]
pointer = &a[0];
// x prende il valore di pointer, cioè di a[0];
x = *pointer;

Se volessi scorrere, ad esempio, alla posizione i-ma dell'array, basterebbe incrementare il puntatore di i; cioè

pointer + i "è equivalente a" a[i]

Graficamente questo viene rappresentato come:

         0  1  2  3  4 ... n
         __ __ __ __ __ __ __
alfa    |__|__|__|__|__|__|__|

pointer  +1 +2 .. +i

Comunque array e puntatori hanno delle sostanziali differenze:
  • Un puntatore è una variabile, sulla quale possiamo eseguire le più svariate operazioni (come l'assegnamento).
  • Un array non è una variabile convenzionale (è un contenitore di variabili) ed alcune operazioni da array a puntatore potrebbero non essere permesse.


Torna a inizio pagina