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