📢 Nuovo Corso Laravel API disponibile!

Esercizi pointer in C

Ecco degli esercizi semplici con soluzione per praticare le basi pointer in C.

Esercizio 1

Dichiarazione di un puntatore e stampa del valore puntato:
#include <stdio.h>
int main() {
int numero = 10;
int *puntatore = &numero;
printf("Valore puntato: %d\n", *puntatore);
return 0;
}

Esercizio 2

Scambio di due numeri usando puntatori:
#include <stdio.h>
void scambiaNumeri(int *ptr1, int *ptr2) {
int temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}
int main() {
int numero1 = 5;
int numero2 = 10;
printf("Prima dello scambio: numero1 = %d, numero2 = %d\n", numero1, numero2);
scambiaNumeri(&numero1, &numero2);
printf("Dopo lo scambio: numero1 = %d, numero2 = %d\n", numero1, numero2);
return 0;
}

Esercizio 3

Incremento di un numero usando un puntatore:
#include <stdio.h>
void incrementaNumero(int *ptr) {
(*ptr)++;
}
int main() {
int numero = 5;
printf("Prima dell'incremento: numero = %d\n", numero);
incrementaNumero(&numero);
printf("Dopo l'incremento: numero = %d\n", numero);
return 0;
}

Esercizio 4

Funzione per calcolare la lunghezza di una stringa usando puntatori:
#include <stdio.h>
int calcolaLunghezzaStringa(const char *stringa) {
int lunghezza = 0;
while (*stringa != '\0') {
lunghezza++;
stringa++;
}
return lunghezza;
}
int main() {
char nome[] = "Ciao";
int lunghezza = calcolaLunghezzaStringa(nome);
printf("La lunghezza della stringa è: %d\n", lunghezza);
return 0;
}

Esercizio 5

Somma di elementi di un array usando puntatori:
#include <stdio.h>
int sommaArray(int *array, int dimensione) {
int somma = 0;
for (int i = 0; i < dimensione; i++) {
somma += *array;
array++;
}
return somma;
}
int main() {
int numeri[] = {1, 2, 3, 4, 5};
int somma = sommaArray(numeri, 5);
printf("La somma degli elementi dell'array è: %d\n", somma);
return 0;
}

Esercizio 6

Modifica di un array usando puntatori:
#include <stdio.h>
void raddoppiaElementiArray(int *array, int dimensione) {
for (int i = 0; i < dimensione; i++) {
*array *= 2;
array++;
}
}
int main() {
int numeri[] = {1, 2, 3, 4, 5};
printf("Array prima della modifica: ");
for (int i = 0; i < 5; i++) {
printf("%d ", numeri[i]);
}
raddoppiaElementiArray(numeri, 5);
printf("\nArray dopo la modifica: ");
for (int i = 0; i < 5; i++) {
printf("%d ", numeri[i]);
}
printf("\n");
return 0;
}

Esercizio 7

Passaggio di un array come parametro a una funzione usando puntatori:
#include <stdio.h>
void stampaArray(int *array, int dimensione) {
for (int i = 0; i < dimensione; i++) {
printf("%d ", *array);
array++;
}
printf("\n");
}
int main() {
int numeri[] = {1, 2, 3, 4, 5};
stampaArray(numeri, 5);
return 0;
}

Esercizio 8

Calcolo della somma e della media di un array usando puntatori:
#include <stdio.h>
void calcolaSommaEMedia(int *array, int dimensione, int *somma, float *media) {
*somma = 0;
for (int i = 0; i < dimensione; i++) {
*somma += *array;
array++;
}
*media = (float)(*somma) / dimensione;
}
int main() {
int numeri[] = {1, 2, 3, 4, 5};
int somma;
float media;
calcolaSommaEMedia(numeri, 5, &somma, &media);
printf("La somma degli elementi dell'array è: %d\n", somma);
printf("La media degli elementi dell'array è: %.2f\n", media);
return 0;
}

Esercizio 9

Copia di una stringa usando puntatori:
#include <stdio.h>
void copiaStringa(const char *sorgente, char *destinazione) {
while (*sorgente != '\0') {
*destinazione = *sorgente;
sorgente++;
destinazione++;
}
*destinazione = '\0';
}
int main() {
char sorgente[] = "Ciao";
char destinazione[10];
copiaStringa(sorgente, destinazione);
printf("La stringa copiata è: %s\n", destinazione);
return 0;
}

Esercizio 10

Passaggio di un puntatore a una funzione per modificare una variabile:
#include <stdio.h>
void modificaVariabile(int *variabile) {
*variabile = 100;
}
int main() {
int numero = 50;
printf("Prima della modifica: numero = %d\n", numero);
modificaVariabile(&numero);
printf("Dopo la modifica: numero = %d\n", numero);
return 0;
}