Menu
Coddy logo textTech

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" in un 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) non ti restituirà la dimensione effettiva dell'array. Qui arr è in realtà un puntatore, non un array. Imparerai a conoscere i puntatori 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. Invece dovresti usare la sintassi *:

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

La sintassi dell'asterisco (*) fa riferimento ai puntatori, che verranno 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