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 e Strutture


Nell'uso congiunto di strutture e puntatori, come mostrato nell'esempio seguente:

struct PIPPO { int x, y, z; } elemento;
struct PIPPO *puntatore;

puntatore = &elemento;

puntatore->x = 6;
puntatore->y = 8;
puntatore->z = 5;

si può notare che abbiamo creato una struttura di tipo PIPPO e di nome "elemento", ed un puntatore ad una struttura di tipo PIPPO. Per accedere ai membri interni della struttura "elemento" abbiamo usato l'operatore -> sul puntatore alla struttura. Inoltre è possibile utilizzare i puntatori anche per, ad esempio, le liste semplici (tratteremo le liste nella lezione 15), in cui per collegare due elementi, basta scrivere:

typedef struct { int inf; ELEMENTO *pun; } ELEMENTO;

ELEMENTO ele1, ele2;

// in questo modo faccio puntare il primo elemento al secondo
ele1.pun = &ele2;

ESEMPIO PRATICO (Visualizza il sorgente completo)
Il largo uso fatto di puntatori fa capire quanto siano importanti questi strumenti per scrivere codice potente (in termini di capacità), ma allo stesso tempo estremamente ridotto (rispetto ad una versione senza puntatori). Ad esempio è possibile modificare gli elementi di una lista (spiegato successivamente) semplicemente "giocando" con i puntatori.

415             // Trovato l'elemento gli faccio puntare l'oggetto puntato dal suo
416             // puntatore, in poche parole "salto" l'elemento da eliminare
417             if(subscelta == n)
418             { // IF - OPEN
419     
420               aus->pun=aus->pun->pun;
421     
422             } else { // ELSE
423     
424               // Nel caso in cui il puntatore fosse NULL, per non creare casini
425               // glielo assegniamo direttamente
426               aus=aus->pun;
427     
428             } // IF - CLOSE




Torna a inizio pagina