🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi Scope e Lifetime C++

Codegrind Team•Jul 12 2024

Ecco degli esercizi con soluzione per praticare l’utilizzo di scope e lifetime delle variabili in C++.

Esercizio 1: Scope delle variabili locali

Creare una funzione che dichiara variabili locali e stampare i loro valori all'interno e all'esterno del loro scope.
#include <iostream>

void testScope() {
    int x = 10;
    {
        int y = 20;
        std::cout << "Dentro il blocco: x = " << x << ", y = " << y << std::endl;
    }
    // y non è accessibile qui
    std::cout << "Fuori dal blocco: x = " << x << std::endl;
}

int main() {
    testScope();
    return 0;
}

Esercizio 2: Lifetime delle variabili statiche

Creare una funzione che utilizza una variabile statica e osservare come il suo valore persiste tra chiamate successive alla funzione.
#include <iostream>

void incrementa() {
    static int counter = 0;
    counter++;
    std::cout << "Counter: " << counter << std::endl;
}

int main() {
    incrementa(); // Counter: 1
    incrementa(); // Counter: 2
    incrementa(); // Counter: 3
    return 0;
}

Esercizio 3: Variabili globali e scope

Dichiarare e utilizzare una variabile globale in diverse funzioni.
#include <iostream>

int globale = 0;

void incrementaGlobale() {
    globale++;
}

void stampaGlobale() {
    std::cout << "Globale: " << globale << std::endl;
}

int main() {
    incrementaGlobale();
    stampaGlobale(); // Globale: 1
    incrementaGlobale();
    stampaGlobale(); // Globale: 2
    return 0;
}

Esercizio 4: Scope dei parametri delle funzioni

Dimostrare che i parametri delle funzioni hanno lo scope limitato alla funzione stessa.
#include <iostream>

void funzione(int parametro) {
    std::cout << "Parametro: " << parametro << std::endl;
}

int main() {
    int valore = 42;
    funzione(valore);
    // parametro non è accessibile qui
    return 0;
}

Esercizio 5: Variabili automatiche e dinamiche

Confrontare il lifetime delle variabili automatiche e dinamiche.
#include <iostream>

void automaticVar() {
    int a = 10;
    std::cout << "Automatic Variable: " << a << std::endl;
}

void dynamicVar() {
    int* p = new int(20);
    std::cout << "Dynamic Variable: " << *p << std::endl;
    delete p;
}

int main() {
    automaticVar();
    // a non è accessibile qui
    dynamicVar();
    // p non è accessibile qui
    return 0;
}

Esercizio 6: Scope di variabili nelle classi

Dichiarare variabili membro e variabili locali in una classe e dimostrare il loro scope.
#include <iostream>

class MyClass {
private:
    int membro;
public:
    MyClass(int valore) : membro(valore) {}

    void funzione() {
        int locale = 20;
        std::cout << "Membro: " << membro << ", Locale: " << locale << std::endl;
    }
};

int main() {
    MyClass obj(10);
    obj.funzione();
    // membro e locale non sono accessibili qui
    return 0;
}