🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi pointer in C

Codegrind TeamJul 22 2023

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;
}