Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Passagem de Array Dinâmico como Argumento da Função | Especificação de Argumentos de Função
Funções em C++

Passagem de Array Dinâmico como Argumento da Função

Deslize para mostrar o menu

Passando array unidimensional

É possível passar um array dinâmico unidimensional para uma função transmitindo um ponteiro para o array juntamente com o tamanho do array como um parâmetro separado. Como os arrays se transformam em ponteiros ao serem passados para funções, pode-se passar um ponteiro para o primeiro elemento do array. Veja como fazer isso:

main.cpp

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; }

A função processArray() recebe um array dinâmico de inteiros (int*) e seu tamanho como parâmetros. Na função main(), um array dinâmico de tamanho 5 é criado, inicializado e passado para a função utilizando seu nome e o tamanho.

Passando array bidimensional

Ao trabalhar com um array bidimensional dinâmico (um array de ponteiros onde cada ponteiro aponta para um array de elementos), é possível passá-lo como um ponteiro para ponteiro juntamente com as dimensões para uma função.

main.cpp

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; }

A função process() recebe um array 2D alocado dinamicamente (int**) e suas dimensões como parâmetros, preenchendo-o com valores. O array é passado para a função usando seu nome.

question mark

Qual é a forma correta de declarar uma função que aceita um array dinâmico unidimensional de inteiros?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 5
some-alt