Parcurgerea parametrilor la funcții prin valoare și prin referință - un tutorial online cu constructor

Lista de parametri transmise funcției, așa cum se arată în secțiunea anterioară, constă din numele parametrilor și instrucțiunile pentru tipul lor. De exemplu, în antet:







dublu FSum (dublu X1, dublu X2, int A)

trei parametri X1, X2, A sunt specificați și tipurile acestora sunt definite. Apelul acestei proceduri poate arata astfel:

Aceasta este doar o modalitate de a transmite parametrii unei proceduri, numită transfer de valori. Lucrează așa. La momentul apelului, în funcții de memorie sunt variabile temporare numit X1, X2, A, și valorile lor sunt copiate argumentul Y, X2 și constante 5. La legătura dintre argumentele și variabilele X1, X2, A rupt. Puteți modifica valorile X1, X2 și A în interiorul procedurii, dar acest lucru nu afectează în niciun fel valorile argumentelor. Argumentele sunt protejate în mod fiabil de modificările neintenționate ale valorilor lor cauzate de această funcție. Acest lucru previne efectele secundare accidentale, care interferează atât de puternic cu crearea de software corect și fiabil.







int conta
int conta
int conta

void square (int); // Prototipul funcției de calcul al pătratului
void square (int a) // Titlul funcției
a * = a; // Modificați valoarea parametrului
>

Puteți să apelați această funcție în mod obișnuit prin transmiterea unui nume de argument la ea. De exemplu:

int x1 = 2;
pătrat (x1);

Ca urmare a acestui apel, variabila x1 va fi setată la 4.

Deoarece parametrii de referință sunt menționați în corpul funcției numite pur și simplu prin nume, programatorul poate accepta din greșeală parametrul de referință ca parametru trecut prin valoare. Acest lucru poate duce la erori neplăcute dacă valorile inițiale ale variabilelor sunt modificate de funcția de apelare.

Să dăm un exemplu de pătrat de funcții considerat mai sus. dar cu parametrul care trece prin referință cu ajutorul indicatorului:

void pătrat (int *); // Prototipul funcției de calcul al pătratului
void square (int * a) // Antet a funcției * a * = * a; // Modificați valoarea parametrului
>

Apelul unei funcții similare poate fi efectuat, de exemplu, după cum urmează:

int x1 = 2;
pătrat (x1);







Trimiteți-le prietenilor: