Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Arrays doorgeven aan functies in C++: een praktische gids

Arrays Doorgeven aan Functies in C++

Deze gids legt uit hoe je eendimensionale en multidimensionale arrays aan functies in C++ kunt doorgeven met echte code voorbeelden.

In C++ kunnen arrays als functieargumenten geleverd worden, en je kunt ze zelfs indirect retourneren via pointers. De mechanica achter array decay naar pointers en de impact op geheugen en prestaties begrijpen is essentieel voor efficiënte code.


Syntaxis voor Arrays Doorgeven als Functieparameters

De declaratie voor een functie die een array accepteert ziet er zo uit:

returnType functionName(dataType arrayName[arraySize]) { // function body }

Voorbeeld:

int total(int marks[5]) { // implementation }

Hier is marks een int array van vijf elementen. Wanneer de functie aangeroepen wordt, wordt alleen de arraynaam (een pointer naar het eerste element) doorgegeven.


Voorbeeld 1: Een Eendimensionale Array Doorgeven aan een Functie

#include <iostream> using namespace std; // Functie declareren om cijfers te tonen void display(int m[5]) { cout << "Displaying marks:" << endl; for (int i = 0; i < 5; ++i) { cout << "Student " << i + 1 << ": " << m[i] << endl; } } int main() { int marks[5] = {88, 76, 90, 61, 69}; display(marks); // Geef array door door naam return 0; }

Output

Displaying marks: Student 1: 88 Student 2: 76 Student 3: 90 Student 4: 61 Student 5: 69

Belangrijke punten:

  1. Het aanroepen van display(marks); geeft het adres van marks[0] door.
  2. Binnen de functie wordt int m[5] behandeld als int* m;, wijzend naar hetzelfde geheugen.
  3. Het wijzigen van m[i] verandert de originele marks array, wat pass-by-reference semantiek illustreert.

Een Multidimensionale Array Doorgeven aan een Functie

Voor 2‑D arrays moet je het aantal kolommen (de grootte van de tweede dimensie) specificeren zodat de compiler element offsets kan berekenen.

Voorbeeld 2: Een Tweedimensionale Array Doorgeven aan een Functie

#include <iostream> using namespace std; void display(int n[][2]) { cout << "Displaying values:" << endl; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 2; ++j) { cout << "num[" << i << "][" << j << "]: " << n[i][j] << endl; } } } int main() { int num[3][2] = {{3, 4}, {9, 5}, {7, 1}}; display(num); return 0; }

Output

Displaying values: num[0][0]: 3 num[0][1]: 4 num[1][0]: 9 num[1][1]: 5 num[2][0]: 7 num[2][1]: 1

Notities:

  • Het rijaantal (3) is optioneel omdat de compiler het kan afleiden uit de array definitie.
  • Het specificeren van de kolomgrootte ([][2]) is verplicht voor correcte pointer arithmetic.

Hogere-dimensionale arrays volgen dezelfde regel: de grootte van alle dimensies behalve de eerste moet gespecificeerd zijn.


Een Array Teruggeven uit een Functie

Functies kunnen geen volledige array direct teruggeven. In plaats daarvan retourneren ze een pointer naar het eerste element, wat kan verwijzen naar een statisch gealloceerde array, een dynamische array, of een tijdelijk object. Zorgvuldigheid is geboden om geen pointers naar lokale (stack) arrays terug te geven, wat zou leiden tot dangling references.

Voorbeeld (statische array):

int* getArray() { static int arr[5] = {1, 2, 3, 4, 5}; return arr; // pointer naar eerste element }

Voor dynamische allocatie, overweeg std::vector<T> te retourneren voor veiligheid en automatisch geheugenbeheer.

Voor veilige array hantering in C++ in productiecode wordt verdere lezing aanbevolen.

C Taal

  1. C# Jagged Arrays: Declaratie, Initialisatie en Toegang
  2. C++ operators: complete gids met praktische voorbeelden
  3. C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
  4. C Programmeeroperatoren Beheersen: Een Uitgebreide Gids
  5. C++ Arrays Ontmaskerd: Declaratie, Initialisatie en Pointer‑Technieken
  6. C++ Dynamische Array‑Allocatie: Praktische Handleiding met Code‑Voorbeelden
  7. C++ Operator Overloading – Praktische Handleiding met Code‑Voorbeelden
  8. C++ Functies Uitgelegd met Praktische Codevoorbeelden
  9. C-programmeren leren: Uitgebreide tutorial voor beginners
  10. C++ Overloading Beheersen: Functies & Operators Uitgelegd
  11. Polymorfisme in C++ Begrijpen: Een Praktische Gids