Menu
Coddy logo textTech

Modificare le variabili tramite puntatori

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 27 di 63.

Ora puoi sfruttare la vera potenza dei puntatori: modificare la variabile originale tramite una funzione. Quando passi un puntatore a una funzione, la funzione può usare l'operatore di dereferenziazione per modificare il valore memorizzato a quell'indirizzo di memoria.

All'interno della funzione, dereferenzi il puntatore usando l'operatore * per accedere al valore della variabile originale e modificarlo. Questa tecnica si chiama passaggio per riferimento perché passi un riferimento alla posizione della variabile in memoria.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Desreferencia para modificar el valor original
}

int main() {
    int x = 5;
    doubleValue(&x);  // Pasa la dirección de x
    // ¡x ahora es 10!
    return 0;
}

La chiave è usare *ptr sul lato sinistro dell'assegnazione per modificare il valore all'indirizzo di memoria contenuto nel puntatore. Questo consente alle funzioni di modificare in modo permanente le variabili della funzione chiamante, aprendo possibilità di programmazione potenti che il passaggio per valore semplicemente non può offrire.

challenge icon

Sfida

Facile

Scrivi un programma C che dimostri come modificare le variabili tramite puntatori creando una funzione che triplica il valore di un intero.

Il programma dovrebbe:

  1. Creare una funzione denominata tripleValue che accetta un puntatore a un intero come parametro
  2. All'interno della funzione tripleValue, usare l'operatore di dereferenziazione per moltiplicare per 3 il valore all'indirizzo di memoria
  3. All'interno della funzione tripleValue, stampare il nuovo valore nel formato: Value tripled to: [value]
  4. Nella funzione main, dichiarare una variabile intera denominata number e inizializzarla con il valore 8
  5. Stampare il valore originale nel formato: Original value: [value]
  6. Chiamare la funzione tripleValue e passare l'indirizzo della variabile number usando l'operatore indirizzo
  7. Dopo la chiamata alla funzione, stampare il valore finale di number nel formato: Final value: [value]

L'output dovrebbe dimostrare che la funzione modifica correttamente la variabile originale tramite il puntatore:

Original value: 8
Value tripled to: 24
Final value: 24

Questa sfida dimostra la potenza del passaggio per riferimento usando i puntatori: la funzione può modificare permanentemente la variabile originale dereferenziando il puntatore e cambiando il valore in quella posizione di memoria.

Provalo tu

#include <stdio.h>

// TODO: Scrivi qui la tua funzione tripleValue

int main() {
    // TODO: Scrivi qui il tuo codice
    // Dichiara e inizializza la variabile number
    // Stampa il valore originale
    // Chiama la funzione tripleValue
    // Stampa il valore finale
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online