C ++ Passaggio di matrici come parametri di funzione (con esempi)

In questo tutorial, impareremo come passare un array unidimensionale e multidimensionale come parametro di funzione in C ++ con l'aiuto di esempi.

In C ++, possiamo passare array come argomento a una funzione. Inoltre, possiamo restituire array da una funzione.

Prima di imparare a passare gli array come argomento di una funzione, assicurati di conoscere gli array C ++ e le funzioni C ++.

Sintassi per il passaggio di array come parametri di funzione

La sintassi per passare un array a una funzione è:

 returnType functionName(dataType arrayName(arraySize)) ( // code )

Vediamo un esempio,

 int total(int marks(5)) ( // code )

Qui, abbiamo passato un intarray di tipi chiamato mark alla funzione total(). La dimensione dell'array è 5.

Esempio 1: passaggio di array unidimensionali a una funzione

 // C++ Program to display marks of 5 students #include using namespace std; // declare function to display marks // take a 1d array as parameter void display(int m(5)) ( cout << "Displaying marks: " << endl; // display array elements for (int i = 0; i < 5; ++i) ( cout << "Student " << i + 1 << ": " << m(i) << endl; ) ) int main() ( // declare and initialize an array int marks(5) = (88, 76, 90, 61, 69); // call display function // pass array as argument display(marks); return 0; )

Produzione

 Visualizzazione dei voti: Studente 1:88 Studente 2:76 Studente 3:90 Studente 4:61 Studente 5:69

Qui,

  1. Quando chiamiamo una funzione passando un array come argomento, viene utilizzato solo il nome dell'array.
     display(marks);
    Qui, i segni di argomento rappresentano l'indirizzo di memoria del primo elemento dei segni di matrice (5).
  2. Tuttavia, notare il parametro della display()funzione.
     void display(int m(5))
    Qui, usiamo la dichiarazione completa dell'array nel parametro della funzione, comprese le parentesi quadre ().
  3. Il parametro della funzione viene int m(5)convertito in int* m;. Questo punta allo stesso indirizzo indicato dai segni dell'array. Ciò significa che quando manipoliamo m (5) nel corpo della funzione, stiamo effettivamente manipolando i segni dell'array originale.
    Il C ++ gestisce il passaggio di un array a una funzione in questo modo per risparmiare memoria e tempo.

Passaggio di array multidimensionali a una funzione

Possiamo anche passare array multidimensionali come argomento alla funzione. Per esempio,

Esempio 2: passaggio di array multidimensionali a una funzione

 // C++ Program to display the elements of two // dimensional array by passing it to a function #include using namespace std; // define a function // pass a 2d array as a parameter void display(int n()(2)) ( cout << "Displaying Values: " << endl; for (int i = 0; i < 3; ++i) ( for (int j = 0; j < 2; ++j) ( cout << "num(" << i << ")(" << j << "): " << n(i)(j) << endl; ) ) ) int main() ( // initialize 2d array int num(3)(2) = ( (3, 4), (9, 5), (7, 1) ); // call the function // pass a 2d array as an argument display(num); return 0; ) 

Produzione

 Valori visualizzati: num (0) (0): 3 num (0) (1): 4 num (1) (0): 9 num (1) (1): 5 num (2) (0): 7 num ( 2) (1): 1

Nel programma sopra, abbiamo definito una funzione denominata display(). La funzione accetta un array bidimensionale int n()(2)come argomento e stampa gli elementi dell'array.

Durante la chiamata della funzione, passiamo solo il nome dell'array bidimensionale come argomento della funzione display(num).

Nota : non è obbligatorio specificare il numero di righe nella matrice. Tuttavia, il numero di colonne dovrebbe essere sempre specificato. Questo è il motivo per cui abbiamo utilizzato int n()(2).

Possiamo anche passare array con più di 2 dimensioni come argomento della funzione.

C ++ Restituzione di una matrice da una funzione

Possiamo anche restituire un array dalla funzione. Tuttavia, la matrice effettiva non viene restituita. Invece l'indirizzo del primo elemento dell'array viene restituito con l'aiuto dei puntatori.

Impareremo a restituire array da una funzione nei prossimi tutorial.

Articoli interessanti...