Puntatori in C++ - IX - Puntatori a struttura

Un puntatore può anche puntare ad una struttura. Nei più moderni linguaggi questo è l'uso comune tanto che in Java e Javascript ogni struttura/oggetto è in realtà in puntatore. Dai un occhio al seguente codice:

#include <iostream>
using namespace std;

// Copyright @ ZHIQIANG ZHOU 
// definisce una struttura d'esempio
struct Esempio {
    int a;
    char b;
};

int main() {
    struct Esempio x;
    struct Esempio *p;	//  puntatore a struttura
    struct Esempio *p2; // Un altro puntatore a struttura

    p = &x;	/*	prende l'indirizzo della struttura da ora in poi, *p e x sono la stessa cosa */
    p2 = p; // se modifico p2 modifico anche p1 e x
    (*p).a=12;
    cout << "Valore di x.a: " << x.a << endl;

    x.b='z';
    cout << "Valore di x.b: " << (*p).b << endl;

    // -> equivale a "(* )."
    cout << "Valore di x.b: " << p->b << endl;

    // Dà lo stesso valore di prima
    cout << "Valore di x.b: " << p2->b << endl;

    return 0;
}

Bello, vero? Utilizzare la "->" è il sogno di chiunque!

Attività:

  1. Riscrivi e prova su devC++ l'esercizio mostrato sopra
  2. Crea una struttura a tuo piacere e inserisci fai inserire i valori al'utente con cin
  3. Crea un vettore di puntatori a struttura di 3 elementi, falli inserire tutti e tre dall'utente e stampali
  4. Cosa succede se cancello con delete uno dei tre puntatori della lista?
  5. Carica su moodle il codice.

Maggiori informazioni su un sito di puntatori

Buon lavoro!