Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Passaggio di un array dinamico come argomento della funzione | Specifica degli Argomenti di Funzione
Funzioni in C++

Passaggio di un array dinamico come argomento della funzione

Scorri per mostrare il menu

Passaggio di un array monodimensionale

È possibile passare un array dinamico monodimensionale a una funzione passando un puntatore all'array insieme alla dimensione dell'array come parametro separato. Poiché gli array decadono in puntatori quando vengono passati alle funzioni, è possibile passare un puntatore al primo elemento dell'array. Ecco come si può fare:

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

La funzione processArray() accetta come parametri un array dinamico di interi (int*) e la sua dimensione. In main(), viene creato un array dinamico di dimensione 5, inizializzato e passato alla funzione utilizzando il suo nome e la dimensione.

Passaggio di array bidimensionale

Quando si lavora con un array bidimensionale dinamico (un array di puntatori in cui ogni puntatore punta a un array di elementi), è possibile passarlo come puntatore a puntatore insieme alle dimensioni a una funzione.

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

La funzione process() accetta un array 2D allocato dinamicamente (int**) e le sue dimensioni come parametri, quindi lo riempie con valori. L'array viene passato alla funzione utilizzando il suo nome.

question mark

Qual è il modo corretto di dichiarare una funzione che accetta un array dinamico monodimensionale di interi?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 2. Capitolo 5
some-alt