Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Skicka dynamisk array som argument till funktionen | Specifikation av funktionsargument
C++-Funktioner

Skicka dynamisk array som argument till funktionen

Svep för att visa menyn

Skicka en endimensionell array

Du kan skicka en endimensionell dynamisk array till en funktion genom att skicka en pekare till arrayen tillsammans med arrayens storlek som en separat parameter. Eftersom arrayer omvandlas till pekare när de skickas till funktioner, kan du skicka en pekare till det första elementet i arrayen. Så här gör du:

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

Funktionen processArray() tar en dynamisk heltalsarray (int*) och dess storlek som parametrar. I main() skapas en dynamisk array av storlek 5, initieras och skickas till funktionen med dess namn och storlek.

Skicka tvådimensionell array

Vid hantering av en dynamisk tvådimensionell array (en array av pekare där varje pekare pekar på en array av element), kan du skicka den som en pekare till en pekare tillsammans med dimensionerna till en funktion.

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

Funktionen process() tar en dynamiskt allokerad 2D-array (int**) och dess dimensioner som parametrar, och fyller sedan arrayen med värden. Arrayen skickas till funktionen med sitt namn.

question mark

Vilket är det korrekta sättet att deklarera en funktion som tar emot en dynamisk endimensionell heltalsarray?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 2. Kapitel 5
some-alt