Esercitazioni del corso di Laboratorio di Calcolo 
     n. 6
      25 maggio 2006
    puntatori

    1.   scaricate il file main.cc nel vostro direttorio ex6. Leggetelo, compilatelo, giratelo... inserite quindi nel file dei vostri commenti che illustrino i risultati ottenuti: chi sono &Dim, punt, *punt? cos'e` Vett? Di quanti bytes si sposta un puntatore ad un double quando gli si somma 1?
    2. scaricatevi i files parametri.h e parametri.cc. In parametri.h troverete i prototipi di una serie di funzioni. La loro implementazione e` in parametri.cc. Includete il file parametri.h all'inizio di main.cc. A questo punto procedete con una funzione per volta con le seguenti operazioni:
      • g++   -c    parametri.cc
      • provate a chiamare la funzione dal vostro programma passandole il vettore e la dimensione del vettore (prima dell'istruzione delete!).  Compilate con

      • g++  main.cc parametri.o
         
        Se ci sono errori cercate di capirli e di correggerli (potrebbero essere dovuti al tipo di argomento che passate alla funzione: alcuni parametri sono valori, altri indirizzi!)

      • editate parametri.cc e all'interno della funzione in esame, dopo una stampa che dica in che funzione vi trovate, stampate l'indirizzo del primo elemento del vettore e l'indirizzo della variabile che contiene la dimensione del vettore. Confrontateli con gli indirizzi stampati in precedenza dal programma principale.
      • modificate all'interno della funzione un elemento del vettore A (ad esempio il primo) ponendolo uguale ad un valore diverso da quello usato per l'inizializzazione e caratteristico della funzione in cui vi trovate (ad esempio A[0]=11.11 in test1...) e ponete N uguale ad un valore anch'esso diverso da quello impostato in main (ad esempio 1111 in test1...), e stampate qualcosa del tipo

      • in test1 poniamo A[0] uguale a 11.11 e N uguale a 1111
      • nel programma principale, dopo la chiamata alla funzione stampatevi Vett[0] e Dim con una scritta del tipo "dopo la chiamata a test1 troviamo..."
      • Cosa osservate? scrivete i vostri commenti su ogni funzione nel file header vicino al prototipo di ogni funzione

      • (NB: se fate le cose per bene test3 e test4 quando date il comando g++ -c parametri.cc non compileranno: commentate l'istruzione che provoca l'errore e spiegate perche'!)
        (NB2: in alcuni casi vedrete cambiare il valore di Dim: questo non ha effetto sulla dimensione di Vett perche' e` gia` stato dimensionato, e` solo la variabile Dim che cambia!)