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.
Sfida
FacileCrea 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
value1che rappresenta il primo numero - Un intero
value2che rappresenta il secondo numero - Un intero
value3che rappresenta il terzo numero
Il tuo programma dovrebbe:
- Creare una funzione chiamata
tripleValuesche accetti tre parametri interi per riferimento - All'interno della funzione, moltiplicare ciascun parametro per 3
- Nella funzione main, leggere i tre valori di input e memorizzarli in variabili
- Stampare i valori originali prima di chiamare la funzione
- Chiamare la funzione
tripleValuescon le tre variabili - 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;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori4Mappe (coppie chiave-valore)
Introduzione a std::mapCreare una mappaAccedere ai valori e modificarliVerificare la presenza di chiaviRimuovere coppieIterare su una mappaRiepilogo - Frequenza delle parole7Funzioni avanzate
Passaggio per riferimentoIntroduzione alle espressioni lambdaLambda con parametriLambda con valori di ritornoIntroduzione alla ricorsioneFattoriale ricorsivoOrdinamento con lambda2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online