Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Returnering af Arrays fra Funktionen | Specifikation af funktions returværdier
C++ Funktioner

Returnering af Arrays fra Funktionen

Stryg for at vise menuen

Der er en vigtig begrænsning: kun dynamiske arrays kan returneres fra funktioner. Denne begrænsning skyldes funktioners lokale scope; statiske arrays oprettet inden for en funktion er kun tilgængelige i den pågældende funktion.

Hvis du forsøger at returnere et lokalt oprettet array, vil du støde på en begrænsning på grund af funktionens scope (du vil forsøge at returnere adressen på ikke-eksisterende variabler, hvilket vil føre til en fejl).

Returnering af et dynamisk array

I modsætning til lokale variabler, som frigives, når en funktion afsluttes, gør dynamisk hukommelse allokeret med new[] det muligt for data at eksistere efter funktionens scope, hvor de blev oprettet. Som resultat kan vi tilgå variabler oprettet inde i funktionen ved hjælp af deres adresser.

For at returnere et dynamisk array skal vi bruge følgende typespecifikatorer i funktionssignaturen:

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

Funktionen allokerer dynamisk hukommelse til et heltalsarray af den angivne størrelse. Den initialiserer arrayets elementer med værdier fra 1 til arrayets size. Funktionen returnerer en pointer til det første element i det dynamisk allokerede heltalsarray, som nu kan bruges i main()-blokken.

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

Princippet er det samme som ved returnering af et 1D-array: den eneste forskel er, at vi skal returnere en pointer til arrayet af pointers ved at bruge int** typespecifikatoren til at returnere 2D-arrayet.

question mark

Hvilket udsagn om at returnere arrays fra funktioner er korrekt?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 2
some-alt