Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Dynaamisen Taulukon Välittäminen Funktion Argumenttina | Funktioargumenttien Määrittely
C++-Funktiot

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

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

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ä.

question mark

Mikä on oikea tapa määritellä funktio, joka ottaa vastaan dynaamisen yksisuuntaisen kokonaislukutaulukon?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 5
some-alt