Laboratorio di Programmazione. AA 2007/08.
Esercitazione n. 8

Scopo di questa esercitazione è di familiarizzarsi con i puntatori e array.

Al solito, si suggerisce di creare una directory apposita per i files relativi a questa esercitazione.
I prototipi delle function di libreria per operare sulle strighe risiedono nel file di header string.h.Per utilizzare malloc invece è  necessario il file di header  stdlib.h.


  1. Scrivere un programma che dichiari 3 variabili intere, tre float, tre double e tre puntatori a float. Usare l' operatore indirizzo per decidere se sono state riservate locazioni di memoria contigue ed eventualmente l' ordine con cui il compilatore ha riservato memoria.


  2. Usare malloc e poi calloc per scoprire empiricamente quanta memoria può essere allocata al massimo sul sistema che state utilizzando.


  3. Cosa verrà visualizzato dal seguente frammento di programma ?
    int a[3]={1,2,3};
    modifica(a);
    printf("%d %d %d \n",a[0],a[1],a[2]);
    ....
    
    void modifica (int a[3])
    {
       int i;
       for(i=0; i<3 ; i++)
            a[i]=20*a[i];
    }
    


  4. Scrivere un programma che permetta di verificare la differenza (se c'è) tra *p++, (*p)++ e *(p++), nell' ipotesi che p sia un puntatore a int. (N.B. dopo ogni scrittura delle precedenti 3 espressioni, va ripristinato il valore iniziale di p).