Menu
Coddy logo textTech

Passaggio per valore

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

Quando passi una variabile a una funzione in C, la funzione riceve una copia del valore di quella variabile, non la variabile stessa. Questo concetto fondamentale si chiama passaggio per valore.

Ecco cosa succede: se hai una variabile x con il valore 10 e la passi a una funzione, la funzione riceve una copia separata di quel valore. Le eventuali modifiche che la funzione apporta a questa copia non influiscono sulla variabile originale nella funzione chiamante.

void tryToChange(int num) {
    num = 99;  // Questo modifica solo la copia
}

int main() {
    int x = 10;
    tryToChange(x);
    // x è ancora 10, non 99
    return 0;
}

Questo comportamento protegge i tuoi dati originali da modifiche accidentali da parte delle funzioni. Tuttavia, significa anche che, se vuoi che una funzione modifichi effettivamente il valore di una variabile, il passaggio per valore non funzionerà. Comprendere questa limitazione è fondamentale per proseguire e imparare i puntatori e come possono risolvere questo problema.

challenge icon

Sfida

Facile

Scrivi un programma in C che dimostri il concetto del passaggio per valore tentando di modificare una variabile all'interno di una funzione e osservando che la variabile originale rimane invariata.

Il tuo programma dovrebbe:

  1. Creare una funzione chiamata tryToModify che accetta un parametro intero chiamato number
  2. All'interno della funzione tryToModify, aggiungere 50 al parametro number
  3. All'interno della funzione tryToModify, stampare il valore modificato nel formato: Inside function: [value]
  4. Nella funzione main, dichiarare una variabile intera chiamata original e inizializzarla con il valore 25
  5. Stampare il valore originale prima di chiamare la funzione nel formato: Before function call: [value]
  6. Chiamare la funzione tryToModify e passare la variabile original come argomento
  7. Dopo la chiamata alla funzione, stampare di nuovo il valore di original nel formato: After function call: [value]

Il tuo output dovrebbe dimostrare che il valore della variabile originale rimane invariato nonostante la modifica all'interno della funzione:

Before function call: 25
Inside function: 75
After function call: 25

Questa sfida dimostra il concetto fondamentale del passaggio per valore in C, in cui le funzioni ricevono copie delle variabili anziché le variabili stesse. Qualsiasi modifica apportata al parametro all'interno della funzione non influisce sulla variabile originale nella funzione chiamante.

Provalo tu

#include <stdio.h>

// TODO: Scrivi qui la tua funzione tryToModify

int main() {
    // TODO: Scrivi qui il tuo codice
    // 1. Dichiara e inizializza la variabile originale
    // 2. Stampa il valore prima della chiamata alla funzione
    // 3. Chiama la funzione tryToModify
    // 4. Stampa il valore dopo la chiamata alla funzione
    
    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