Net als variabelen kan array ook als argument aan een functie worden doorgegeven. In deze handleiding leren we hoe u de array kunt doorgeven aan een functie met behulp van call by value en call by reference-methoden.
Om deze handleiding te begrijpen, moet u kennis hebben van de volgende C-programmeeronderwerpen :
Matrix doorgeven om te functioneren met de methode call by value
Zoals we al weten in dit type functieaanroep, wordt de werkelijke parameter gekopieerd naar de formele parameters.
# include <stdio.h> void disp (char ch) {printf ("% c", ch); } int main () {char arr [] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};voor (int x = 0; x <10; x ++){/ * Ik geef elk element één voor één door met subscript * /disp (arr [x]);}terugkeer 0; }
Output:
abcdefghij
Array doorgeven aan functie met behulp van call by reference
Wanneer we het adres van een array doorgeven terwijl we een functie aanroepen, wordt dit functieaanroep bij referentie genoemd. Wanneer we een adres als argument doorgeven, moet de functieverklaring een pointer als parameter hebben om het doorgegeven adres te ontvangen.
# include <stdio.h> void disp (int * num) { printf ("% d", * num); } int main () { int arr [] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; voor (int i = 0; i <10; i ++) { / * Doorgeven adressen van array-elementen * / } terugkeer 0; }
Output:
1 2 3 4 5 6 7 8 9 0
Hoe een hele array als argument doorgeven aan een functie?
In het bovenstaande voorbeeld hebben we het adres van elk arrayelement één voor één doorgegeven met een for-lus in C. U kunt echter ook een hele array doorgeven aan een functie als deze:
Opmerking: de arraynaam zelf is het adres van het eerste element van die array. Als de arraynaam bijvoorbeeld arr is, kunt u zeggen dat arr gelijk is aan arr [0] .
# include <stdio.h> void myfuncn (int * var1, int var2) { / * De aanwijzer var1 wijst naar het eerste element van * de array en de var2 is de grootte van de array. In de * lus we verhogen aanwijzer zodat deze naar wijst * het volgende element van de array bij elke stap. * * / voor (int x = 0; x <var2; x ++) { printf ("Waarde van var_arr [% d] is:% d \ n", x, * var1); / * increment pointer voor volgende element ophalen * / Var1 ++; } } int main () { int var_arr [] = {11, 22, 33, 44, 55, 66, 77}; myfuncn (var_arr, 7); terugkeer 0; }
Output:
De waarde van var_arr [0] is: 11 Waarde van var_arr [1] is: 22 De waarde van var_arr [2] is: 33 De waarde van var_arr [3] is: 44 De waarde van var_arr [4] is: 55 De waarde van var_arr [5] is: 66 Waarde van var_arr [6] is: 77
alsjeblieft, kunnen we een rij van een 2D-array aan een functie doorgeven zonder de rij te verwerken? bedankt
Hallo, dit is mijn eerste opmerking en ik ben dol op je site.
In het laatste voorbeeld moet in de hoofdfunctie het eerste argument dat u hebt doorgegeven, var_arr of var_arr [0] zijn.
Bedankt voor je :)
De voorbeelden die hier worden gegeven, zijn niet actief en de waarschuwing wordt weergegeven als "functie moet een waarde retourneren".