Menu
Coddy logo textTech

Passaggio per riferimento

Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 41 di 56.

Quando passi argomenti alle funzioni, C++ normalmente crea copie dei valori. Questo significa che le modifiche all'interno della funzione non influiscono sulle variabili originali. Il passaggio per riferimento cambia questo comportamento consentendo alle funzioni di lavorare direttamente con le variabili originali.

Per passare per riferimento, aggiungi il simbolo & dopo il tipo del parametro nella dichiarazione della funzione:

void doubleValue(int& number) {
    number = number * 2;  // Modifica la variabile originale
}

Quando chiami questa funzione, qualsiasi modifica apportata al parametro all’interno della funzione modificherà direttamente la variabile originale che è stata passata. Questo è particolarmente utile quando vuoi che una funzione modifichi i suoi argomenti o quando lavori con oggetti di grandi dimensioni per cui la copia sarebbe inefficiente.

Il passaggio per riferimento elimina il sovraccarico della copia dei dati, rendendo i tuoi programmi più veloci e più efficienti in termini di memoria, soprattutto con strutture dati complesse come vettori o mappe.

challenge icon

Sfida

Facile

Crea una funzione che dimostri il passaggio per riferimento modificando direttamente le variabili tramite i parametri della funzione. Questa sfida verificherà la tua comprensione di come il simbolo & consenta alle funzioni di lavorare con le variabili originali invece che con copie.

Verranno forniti i seguenti input:

  • Un intero value1 che rappresenta il primo numero
  • Un intero value2 che rappresenta il secondo numero
  • Un intero value3 che rappresenta il terzo numero

Il tuo programma dovrebbe:

  1. Creare una funzione chiamata tripleValues che accetti tre parametri interi per riferimento
  2. All'interno della funzione, moltiplicare ciascun parametro per 3
  3. Nella funzione main, leggere i tre valori di input e memorizzarli in variabili
  4. Stampare i valori originali prima di chiamare la funzione
  5. Chiamare la funzione tripleValues con le tre variabili
  6. Stampare i valori modificati dopo la chiamata alla funzione per mostrare che sono stati cambiati

Usa il seguente formato di output esatto:

Prima della chiamata alla funzione:

Original values: [value1] [value2] [value3]

Dopo la chiamata alla funzione:

Tripled values: [new_value1] [new_value2] [new_value3]

La firma della funzione dovrebbe usare il simbolo & dopo il tipo di ciascun parametro per indicare il passaggio per riferimento: void tripleValues(int& a, int& b, int& c). Questo consente alla funzione di modificare direttamente le variabili originali che le vengono passate, dimostrando la differenza fondamentale tra passaggio per valore e passaggio per riferimento. Le variabili in main verranno modificate in modo permanente dopo la chiamata alla funzione, dimostrando che la funzione ha operato sulle posizioni di memoria originali anziché su delle copie.

Provalo tu

#include <iostream>
using namespace std;

// TODO: Crea la funzione tripleValues qui

int main() {
    // Leggi i valori in input
    int value1, value2, value3;
    cin >> value1 >> value2 >> value3;
    
    // Stampa i valori originali
    cout << "Original values: " << value1 << " " << value2 << " " << value3 << endl;
    
    // TODO: Chiama la funzione tripleValues qui
    
    // Stampa i valori modificati
    cout << "Tripled values: " << value1 << " " << value2 << " " << value3 << endl;
    
    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