Dynaamisen Taulukon Välittäminen Funktion Argumenttina
Pyyhkäise näyttääksesi valikon
Yksiulotteisen taulukon välittäminen
Voit välittää yksiulotteisen dynaamisen taulukon funktiolle välittämällä osoittimen taulukkoon sekä taulukon koon erillisenä parametrina. Koska taulukot muuttuvat osoittimiksi funktioihin välitettäessä, voit välittää osoittimen taulukon ensimmäiseen alkioon. Näin se tehdään:
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; }
Funktio processArray() ottaa parametreina dynaamisen kokonaislukutaulukon (int*) ja sen koon.
Funktiossa main() luodaan, alustetaan ja välitetään dynaaminen taulukko kooltaan 5 funktiolle käyttämällä sen nimeä ja kokoa.
Kaksidimensionaalisen taulukon välittäminen
Kun käsitellään dynaamista kaksidimensionaalista taulukkoa (osoitintaulukko, jossa jokainen osoitin osoittaa alkioiden taulukkoon), se voidaan välittää funktiolle osoittimena osoittimeen yhdessä mittojen kanssa.
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; }
Funktio process() ottaa dynaamisesti varatun 2D-taulukon (int**) ja sen mitat parametreina, ja täyttää sen arvoilla.
Taulukko välitetään funktiolle sen nimellä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme