Menu
CoddyTech

Array e funzioni

Fa parte della sezione Fondamenti del percorso C++ di Coddy. Lezione 62 di 74.

Gli array non possono essere passati direttamente alle funzioni come array completi. Quando provi a passare un array a una funzione, «decade» a puntatore al suo primo elemento.

Per esempio:

int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
	int size = std::size(arr);
}

std::size(arr) qui non viene compilato, perché arr è in realtà un puntatore, non un array, e un puntatore non memorizza la dimensione dell'array. I puntatori verranno trattati nel prossimo corso.

Ecco perché, quando passiamo array alle funzioni, in genere dobbiamo passare la dimensione come parametro separato:

void processArray(int arr[], int size) {
    // Ora possiamo lavorare in sicurezza con l'array usando il parametro size
}

Ecco come chiamare la funzione:

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

Inoltre, non è possibile restituire un array da una funzione:

int[] processArray(int arr[]) {
	return arr;
}

Questo non è consentito. Dovresti invece usare la sintassi *:

int* processArray(int arr[]) {
	return arr;
}
int* newArr = processArray(arr);

La sintassi con l'asterisco (*) fa riferimento ai puntatori, che saranno trattati nel prossimo corso.

Provalo tu

Questa lezione non include una sfida di codice.

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 Fondamenti

Esercitati da solo: Compilatore C++ online