Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Taulukoiden Palauttaminen Funktiosta | Funktion Palautusarvojen Määrittely
C++-Funktiot

Taulukoiden Palauttaminen Funktiosta

Pyyhkäise näyttääksesi valikon

Tärkeä rajoitus: vain dynaamisia taulukoita voidaan palauttaa funktioista. Tämä rajoitus johtuu funktioiden paikallisesta näkyvyydestä; funktiossa luodut staattiset taulukot ovat käytettävissä vain kyseisessä funktiossa.

Jos yrität palauttaa paikallisesti luodun taulukon, kohtaat rajoituksen funktioiden näkyvyyden vuoksi (yrität palauttaa olemattomien muuttujien osoitteen, mikä johtaa virheeseen).

Dynaamisen taulukon palauttaminen

Toisin kuin paikalliset muuttujat, jotka vapautetaan, kun funktio päättyy, dynaaminen muisti, joka on varattu new[]-operaattorilla, mahdollistaa tietojen säilymisen funktiosta poistumisen jälkeen. Tämän ansiosta voimme päästä käsiksi funktiossa luotuihin muuttujiin niiden osoitteiden avulla.

Dynaamisen taulukon palauttamiseksi funktiossa tulee käyttää seuraavia tyyppimääreitä:

  • dataType* yksidimensionaaliselle taulukolle.
  • dataType** kaksidimensionaaliselle taulukolle.
main.cpp

main.cpp

12345678910111213141516171819
#include <iostream> // Function to create and return a dynamic 1D array int* createArray(const int size) { int* arr = new int[size]; for (int i = 0; i < size; ++i) arr[i] = i + 1; // Example initialization return arr; } int main() { int size = 5; int* myArray = createArray(size); // Don't forget to delete the dynamically allocated memory delete[] myArray; }

Funktio varaa dynaamisesti muistia kokonaislukutaulukolle annetun koon mukaisesti. Se alustaa taulukon alkiot arvoilla 1 taulukon size-kokoon asti. Funktio palauttaa osoittimen dynaamisesti varatun kokonaislukutaulukon ensimmäiseen alkioon, jota voidaan nyt käyttää main()-lohkon sisällä.

main.cpp

main.cpp

1234567891011121314151617181920212223242526272829303132333435
#include <iostream> // Function to create and return a dynamic 2D array int** createArray(const int rows, const int cols) { int** arr = new int*[rows]; for (int i = 0; i < rows; ++i) { arr[i] = new int[cols]; for (int j = 0; j < cols; ++j) { arr[i][j] = i * cols + j + 1; // Example initialization } } return arr; } int main() { int rows = 3; int cols = 2; int** myArray = createArray(rows, cols); // Use the returned 2D array for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) { std::cout << myArray[i][j] << " "; } std::cout << std::endl; } // Don't forget to delete the dynamically allocated memory for (int i = 0; i < rows; ++i) { delete[] myArray[i]; } delete[] myArray; return 0; }

Periaate on sama kuin palautettaessa yksidimensioinen taulukko: ainoa ero on, että meidän täytyy palauttaa osoitin osoittimien taulukkoon käyttämällä int**-tyyppimäärettä palauttaaksemme kaksiulotteisen taulukon.

question mark

Mikä väite taulukoiden palauttamisesta funktioista on oikea?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 3. Luku 2
some-alt