Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Arrays Retourneren Vanuit de Functie | Function Return Values Specification
C++-Functies

Arrays Retourneren Vanuit de Functie

Veeg om het menu te tonen

Er is een belangrijke beperking: alleen dynamische arrays kunnen worden geretourneerd vanuit functies. Deze beperking ontstaat door de lokale scope van functies; statische arrays die binnen een functie zijn aangemaakt, zijn alleen binnen die functie toegankelijk.

Als je probeert een lokaal aangemaakte array te retourneren, stuit je op een beperking vanwege de scope van de functie (je probeert het adres van niet-bestaande variabelen te retourneren, wat tot een fout zal leiden).

Een dynamische array retourneren

In tegenstelling tot lokale variabelen, die worden gedealloceerd wanneer een functie wordt verlaten, blijft dynamisch geheugen dat is toegewezen met new[] bestaan buiten de scope van de functie waarin het is aangemaakt. Hierdoor kunnen we variabelen die binnen de functie zijn aangemaakt benaderen via hun adressen.

Om een dynamische array te retourneren, moeten we de volgende typespecificaties gebruiken in de functiedeclaratie:

  • dataType* voor een 1D-array.
  • dataType** voor een 2D-array.
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; }

De functie reserveert dynamisch geheugen voor een integer-array van de opgegeven grootte. De array-elementen worden geïnitialiseerd met waarden van 1 tot de size van de array. De functie retourneert een pointer naar het eerste element van de dynamisch gealloceerde integer-array die nu gebruikt kan worden in het main()-blok.

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

Het principe is hetzelfde als het retourneren van een 1D-array: het enige verschil is dat we een pointer naar de array van pointers moeten retourneren met behulp van de int** type-aanduiding om de 2D-array te retourneren.

question mark

Welke uitspraak over het retourneren van arrays uit functies is correct?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 2
some-alt