Esercitazioni del
corso
di Laboratorio di Calcolo
n. 8
26 maggio 2005
puntatori
- <>
scaricate il file main.cc
nel vostro direttorio ex8. 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?>
-
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!)