Menu
Coddy logo textTech

Passare puntatori alle funzioni

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

Ora che hai compreso i limiti del passaggio per valore, scopriamo come passare puntatori alle funzioni risolve questo problema. Invece di passare una copia del valore di una variabile, puoi passare alla funzione l'indirizzo di memoria della variabile.

Quando passi un puntatore a una funzione, la funzione può accedere alla posizione in memoria della variabile originale. Ciò significa che la funzione può lavorare direttamente con i dati originali, non solo con una loro copia.

void processValue(int *ptr) {
    // ptr contiene la dirección de la variable original
    // La función ahora puede acceder a esa ubicación de memoria
}

int main() {
    int x = 10;
    processValue(&x);  // Pasa la dirección de x
    return 0;
}

Nota come usiamo l'operatore indirizzo-di & quando chiamiamo la funzione per passare l'indirizzo della variabile. Il parametro della funzione è dichiarato come int *ptr, a indicare che si aspetta di ricevere un puntatore a un intero. Questa tecnica fondamentale apre potenti possibilità per far interagire le funzioni con i dati del tuo programma.

challenge icon

Sfida

Facile

Scrivi un programma C che mostri come passare puntatori alle funzioni. Il tuo programma dovrebbe:

  1. Creare una funzione denominata displayValue che accetta un puntatore a un intero come parametro
  2. All'interno della funzione displayValue, usare l'operatore di dereferenziazione per accedere al valore all'indirizzo di memoria e stamparlo nel formato: Value at address: [value]
  3. Nella funzione main, dichiarare una variabile intera denominata number e inizializzarla con il valore 42
  4. Stampare il valore originale nel formato: Original value: [value]
  5. Chiamare la funzione displayValue e passare l'indirizzo della variabile number usando l'operatore indirizzo
  6. Dopo la chiamata alla funzione, stampare un messaggio di conferma: Function call completed

Il tuo output dovrebbe mostrare che la funzione riceve e accede correttamente all'indirizzo di memoria della variabile originale:

Original value: 42
Value at address: 42
Function call completed

Questa sfida introduce il concetto fondamentale di passaggio dei puntatori alle funzioni, consentendo alla funzione di accedere alla posizione di memoria della variabile originale invece di lavorare con una copia del suo valore.

Provalo tu

#include <stdio.h>

// TODO: Scrivi qui la tua funzione displayValue

int main() {
    // TODO: Scrivi qui il tuo codice
    // 1. Dichiara e inizializza la variabile number
    // 2. Stampa il valore originale
    // 3. Chiama la funzione displayValue
    // 4. Stampa il messaggio di completamento
    
    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