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

C++ matrices y funciones

En este artículo, aprenderás a pasar matrices a C ++las funciones en la que aprenderás a pasar matrices unidimensionales y multidimensionales.

La matrizse puede pasar como parámetro.La función. También se puede devolver un array desde la función. Considera el siguiente ejemplo, pasar un array unidimensional a la función:

Ejemplo1Pasar un array unidimensional a la función

C ++El programa muestra el array unidimensional pasándolo a la función.5puntuaciones de los estudiantes.

#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 << "Mostrar puntuación: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "Student " << i + 1 <<": "<< m[i] << endl;
    }
}

Resultado de la salida

Mostrar puntuación: 
Student 1: 88
Student 2: 76
Student 3: 90
Student 4: 61
Student 5: 69

Cuando se pasa una matriz como parámetro a una función, solo se utiliza el nombre de la matriz como parámetro.

display(marks);

También tenga en cuenta la diferencia entre pasar una matriz como parámetro y una variable.

void display(int m[5]);

El parámetro marks en el código anterior representa la matriz marks[5] la dirección de memoria del primer elemento.

La forma de los parámetros formales en la declaración de la función int m [5] se convierte en int * m; El puntero apunta a la misma dirección de memoria que la matriz marks.

Esta es la razón, a pesar de que la función se utiliza en la función definida por el usuario con diferentes nombres de matrices m[5operaciones, pero el array original sigue siendo operado en marks.

C ++Este enfoque para manejar pasar arrays a funciones ahorra memoria y tiempo.

Pasar un array multidimensional a la función

Arreglo multidimensionalSe puede pasar un array multidimensional de la misma manera que un array unidimensional. Considera el siguiente ejemplo, pasar un array bidimensional a la función:

Ejemplo2: Pasar un array multidimensional a la función

C ++El programa muestra el array pasando los elementos del array bidimensional a la función.

#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 << "Mostrar valor: " << endl;
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 2; ++j)
        {
            cout << n[i][j] << " ";
        }
    }
}

Resultado de la salida

Mostrar valor: 
3 4 9 5 7 1

En el programa anterior, el array multidimensional num se pasa a la función display().

dentro de la función display(), se utiliza un bucle for anidado para recorrer el array n (num).

Este programa utiliza2nbucle forRecorrer los elementos de un array bidimensional. Si es un array tridimensional, debe usar3 bucle for.

Finalmente, todos los elementos se imprimen en la pantalla.

Nota: dimensión mayor2Un array multidimensional puede transmitirse de manera similar a un array bidimensional.

C++ Devolver un array desde una función

C++ No se permite devolver un array completo como parámetro de una función. Pero puede devolver un puntero a un array sin especificar índices.

Si desea devolver un array unidimensional desde una función, debe declarar una función que devuelva un puntero, como se muestra a continuación:

int * myFunction()
{
.
.
.
}

Además, C++ No se permite devolver la dirección de una variable local fuera de una función, a menos que se defina la variable local como static variable.

Ahora, veamos la función siguiente, que generará 10 números aleatorios, y usar un array para devolverlos, como se muestra a continuación:

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
// Función para generar y devolver números aleatorios
int * getRandom()
{
  static int r[8];
 
  // Establecer semilla
  srand((unsigned)time(NULL));
  for (int i = 0; i < 8; ++i)
  {
    r[i] = rand();
    cout << r[i] << endl;
  }
 
  return r;
}
 
// La función principal para llamar a la función definida anteriormente
int main ()
{
   // Un puntero a entero
   int *p;
 
   p = getRandom();
   for (int i = 0; i < 8; i++ )
   {
       *(p + << i <<
       cout << *(p + i) << endl;
   }
 
   return 0;
}

Cuando el código anterior se compila y ejecuta, producirá el siguiente resultado:

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