English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo articolo, imparerai a passare array a funzioni in C++. Imparerai come passare array uno-dimensionali e multidimensionali.
arraypuò essere passata comeFunzione. Può anche restituire un array dalla funzione. Considera l'esempio seguente, passare un array uno-dimensionale a una funzione:
Il programma C++ mostra i punteggi di 5 studenti passando un array uno-dimensionale alla funzione.
#include <iostream> using namespace std; void display(int marks[5]); int main() { int marks[5] = {88, 76, 90, 61, 69}; display(marks); return 0; } void display(int m[5]) { cout << "Mostra il punteggio: "<< endl; for (int i = 0; i < 5; ++i) { cout << "Student " << i + 1 << ": " << m[i] << endl; } }
Risultato di output
Mostra il punteggio: Student 1: 88 Student 2: 76 Student 3: 90 Student 4: 61 Student 5: 69
Quando si passa un array come parametro a una funzione, viene utilizzato solo il nome dell'array come parametro.
display(marks);
Attenzione alla differenza tra passare un array come parametro e passare una variabile.
void display(int m[5]);
Il parametro marks nell'above codice rappresenta l'indirizzo della memoria del primo elemento dell'array marks[5].
Il formale int m[5] nella dichiarazione della funzione viene convertito in int *m; il puntatore punta allo stesso indirizzo dell'array marks.
Ecco il motivo, anche se la funzione opera con un nome di array diverso m[5] definito dall'utente, l'array originale continua a operare con marks.
C++ gestisce in questo modo il passaggio di array a funzioni per risparmiare memoria e tempo.
Array multidimensionalePuò essere passato in modo simile a un array uno-dimensionale. Considera l'esempio seguente, passare un array bidimensionale a una funzione:
Il programma C++ mostra l'elemento di un array bidimensionale passando gli elementi del array alla funzione.
#include <iostream> using namespace std; void display(int n[3][2]); int main() { int num[3][2] = { {3, 4}, {9, 5}, {7, 1} }; display(num); return 0; } void display(int n[3][2]) { cout << "Visualizzare il valore: " << endl; for(int i = 0; i < 3; ++i) { for(int j = 0; j < 2; ++j) { cout << n[i][j] << " "; } } }
Risultato di output
Visualizzare il valore: 3 4 9 5 7 1
Nel programma sopra, l'array multidimensionale num viene passato alla funzione display().
All'interno della funzione display(), utilizzare un ciclo for anidato per esplorare l'array n(num).
Il programma utilizza 2Ciclo forEseguire un ciclo for per attraversare gli elementi di un array bidimensionale. Se è un array tridimensionale, utilizzare 3 cicli for.
Infine, tutti gli elementi vengono stampati sullo schermo.
Attenzione: Le array multidimensionali con dimensioni superiori a 2 possono essere passate in modo simile agli array bidimensionali.
C++ non consente di restituire un array completo come parametro di una funzione. Ma è possibile restituire un puntatore all'array specificando il nome dell'array senza indici.
Se si desidera restituire un array uno-dimensionale da una funzione, è necessario dichiarare una funzione che restituisce un puntatore, come segue:
int *myFunction() { . . . }
Inoltre, C++ non supporta il restituire l'indirizzo di una variabile locale al di fuori di una funzione, a meno che la variabile locale sia definita come Static Variabile.
Ora, diamo un'occhiata alla seguente funzione, che genera 10 numeri casuali e li restituisce utilizzando un array, come segue:
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; // 要生成和返回随机数的函数 int *getRandom() { static int r[8]; // 设置种子 srand((unsigned)time(NULL)); for (int i = 0; i < 8; ++i) { r[i] = rand(); cout << r[i] << endl; } return r; } // 要调用上面定义函数的主函数 int main () { // 一个指向整数的指针 int *p; p = getRandom(); for (int i = 0; i < 8; i++) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } return 0; }
Quando il codice sopra viene compilato ed eseguito, produrrà i seguenti risultati:
30737 23110 21765 14820 8295 12330 28395 191 *(p + 0) : 30737 *(p + 1) : 23110 *(p + 2) : 21765 *(p + 3) : 14820 *(p + 4) : 8295 *(p + 5) : 12330 *(p + 6) : 28395 *(p + 7) : 191