Paso de un Arreglo Dinámico como Argumento de la Función
Desliza para mostrar el menú
Paso de un arreglo unidimensional
Se puede pasar un arreglo dinámico unidimensional a una función pasando un puntero al arreglo junto con el tamaño del arreglo como un parámetro separado. Dado que los arreglos se convierten en punteros al pasarlos a funciones, se puede pasar un puntero al primer elemento del arreglo. Así es como se puede hacer:
main.cpp
12345678910111213141516171819202122232425262728#include <iostream> // Function that takes a dynamic array and its size as parameters void process(int* arr, const int size) { // Access elements of the array using the pointer and the size for (int i = 0; i < size; ++i) std::cout << arr[i] << " "; std::cout << std::endl; } int main() { // Dynamic array allocation int size = 5; int* dynamic_array = new int[size]; // Initializing the dynamic array for (int i = 0; i < size; ++i) dynamic_array[i] = i * 2; // Passing the dynamic array to the function process(dynamic_array, size); // Deallocate the dynamic array to prevent memory leaks delete[] dynamic_array; }
La función processArray() recibe un arreglo dinámico de enteros (int*) y su tamaño como parámetros.
En main(), se crea un arreglo dinámico de tamaño 5, se inicializa y se pasa a la función usando su nombre y tamaño.
Paso de un arreglo bidimensional
Al trabajar con un arreglo bidimensional dinámico (un arreglo de punteros donde cada puntero apunta a un arreglo de elementos), se puede pasar como un puntero a puntero junto con las dimensiones a una función.
main.cpp
1234567891011121314151617181920212223242526272829303132333435#include <iostream> // Function that takes a dynamic 2D array and its size as parameters void process(int** arr, int rows, int cols) { for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) arr[i][j] = i * cols + j; // Fill array with values for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) std::cout << arr[i][j] << " "; std::cout << std::endl; } } int main() { int rows = 3; int cols = 4; // Dynamic 2D array allocation int** dynamicArray = new int*[rows]; for (int i = 0; i < rows; i++) dynamicArray[i] = new int[cols]; // Pass the 2D array to the function process(dynamicArray, rows, cols); // Deallocate the dynamic 2D array for (int i = 0; i < rows; i++) delete[] dynamicArray[i]; delete[] dynamicArray; }
La función process() recibe un arreglo 2D asignado dinámicamente (int**) y sus dimensiones como parámetros, luego lo llena con valores.
El arreglo se pasa a la función usando su nombre.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla