PUNTATORI

  1. Quali sono i valori stampati dal programma seguente?
    
    int a, b, *p, *q;
    a=10;
    b=20;
    p = &a;
    q = &b;
    *q = a + b;
    a = a + *q;
    q = p;
    *q = a + b;
    printf("a=%d b=%d *p=%d *q=%d", a,b,*p,*q);
    
  2. Completare il programma ed eseguirlo per constatare la correttezza della risposta.

  3. Quali sono i valori stampati dal programma seguente?
    int *p, **q;
    int a=10, 
    b=20;
    q = &p;
    p = &a;
    *p = 50;
    **q = 100;
    *q = &b;
    *p = 50;
    a = 
    a+b;
    printf("a=%d b=%d *p=%d **q=%d\n", a, b, *p, **q);
    
    Completare il programma ed eseguirlo per constatare la correttezza della risposta.

  4. Scrivere un programma che crea un array di 10 interi e stampa le coppie indirizzo-valore per ogni cella dell'array. Provare ad eseguirlo due volte e notare che gli indirizzi cambiano.

  5. Scrivere un programma che dichiara due array di 10 elementi ciascuno, e stampa a video contigui se le celle di memoria dei due array sono contigue in memoria. Stampare inoltre il nome dell'array che tra i due ha l'indirizzo più piccolo.

  6. Riscrivere i programmi dell'ultima esercitazione di laboratorio utilizzando i puntatori e non gli indici per scorrere sugli array.