English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di Base di C++

Controllo di Flusso C++

Funzione in C++

Array & Stringhe C++

Strutture dati C++

Classi & Oggetti C++

Puntatore in C++

Ereditarietà in C++

Tutorial STL di C++

Manuale di riferimento C++

Array e Funzione in C++

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:

Esempio 1: 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.

Passare un array multidimensionale a una funzione

Array multidimensionalePuò essere passato in modo simile a un array uno-dimensionale. Considera l'esempio seguente, passare un array bidimensionale a una funzione:

Esempio 2: Passare un array multidimensionale 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++ restituisce un array

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