ESERCIZI SUI PUNTATORI
ES 1
Scrivi un programma in C che dichiari due variabili intere. Implementa una funzione swap che prende in input due puntatori a intero e scambia i valori delle due variabili.
ES 2
Scrivi un programma che dichiari una funzione int quadrato(int x) che restituisce il quadrato di un numero. Nel main, dichiara un puntatore a funzione e usalo per chiamare la funzione quadrato.
ES 3
Scrivi un programma che dichiari una variabile intera, un puntatore a intero e un puntatore a puntatore. Assegna alla variabile un valore. Fai in modo che il puntatore punti a quella variabile. Fai in modo che il puntatore a puntatore punti al puntatore. Stampa il valore della variabile utilizzando sia il puntatore che il puntatore a puntatore.
#include <stdio.h>
/*
Esercizio 1 – Scambio di valori con puntatori
Scrivi un programma in C che dichiari due variabili intere.
Implementa una funzione swap che prende in input due puntatori a intero e scambia i valori delle due variabili.
*/
void swapPointer(int * pa, int * pb){
int auxScambio = *pb;
*pb = *pa;
*pa = auxScambio;
}
/*
Esercizio 2 – Puntatore a funzione
Scrivi un programma che dichiari una funzione int quadrato(int x) che restituisce il quadrato di un numero.
Nel main, dichiara un puntatore a funzione e usalo per chiamare la funzione quadrato.
*/
int quadrato(int x){
return x*x;
}
int main() {
int a = 4;
int b = 3;
printf("%d %d\n", a, b);
swapPointer(&a, &b);
printf("%d %d\n", a, b);
int (*PQuadrato)(int); //funzione che prende un intero e ritorna un intero
PQuadrato = &quadrato; //ottenuto l'indirizzo della funzione
int res = PQuadrato(4); //utilizata la funzione tramite il suo puntatore
printf("valore quadrato: %d", res);
/*
Esercizio 3 – Puntatore a puntatore
Scrivi un programma che dichiari una variabile intera, un puntatore a intero e un puntatore a puntatore.
Assegna alla variabile un valore.
Fai in modo che il puntatore punti a quella variabile.
Fai in modo che il puntatore a puntatore punti al puntatore.
Stampa il valore della variabile utilizzando sia il puntatore che il puntatore a puntatore.
*/
int n = 3;
int * pn = &n;
int ** dpn = &pn;
printf("%d %d %d", n, *pn, **dpn);
return 0;
}