Ultimo aggiornamento del 27 luglio 2020

Amministratori effettivi #

Gli argomenti che sono menzionati nella chiamata di funzione sono noti come argomenti reali. Per esempio:

func1(12, 23);

qui 12 e 23 sono argomenti reali.

Gli argomenti effettivi possono essere costanti, variabili, espressioni ecc.

12
func1(a, b); // here actual arguments are variablefunc1(a + b, b + a); // here actual arguments are expression

Amministratori formali #

Gli argomenti che sono menzionati nella definizione della funzione sono chiamati argomenti formali. Gli argomenti formali sono molto simili alle variabili locali all’interno della funzione. Proprio come le variabili locali, gli argomenti formali vengono distrutti quando la funzione finisce.

1234
int factorial(int n){ // write logic here}

Qui nè l’argomento formale. Cose da ricordare sugli argomenti reali e formali.

  1. Ordine, numero e tipo degli argomenti reali nella chiamata di funzione devono corrispondere agli argomenti formali della funzione.
  2. Se c’è una discrepanza di tipo tra argomenti reali e formali, il compilatore cercherà di convertire il tipo di argomenti reali in argomenti formali se è legale, altrimenti, un valore spazzatura verrà passato all’argomento formale.
  3. I cambiamenti fatti nell’argomento formale non influenzano gli argomenti reali.

Il seguente programma dimostra questo comportamento.

 1 2 3 4 5 6 7 8 910111213141516171819202122232425
#include<stdio.h>void func_1(int);int main(){ int x = 10; printf("Before function call\n"); printf("x = %d\n", x); func_1(x); printf("After function call\n"); printf("x = %d\n", x); // signal to operating system program ran fine return 0;}void func_1(int a){ a += 1; a++; printf("\na = %d\n\n", a);}

Qui il valore della variabile x è 10 prima che la funzione func_1() sia chiamata, dopo che func_1() è chiamata, il valore di x dentro main() è ancora 10. Le modifiche apportate all’interno della funzione func_1() non influenzano il valore di x. Questo accade perché quando passiamo dei valori alle funzioni, viene fatta una copia del valore e quella copia viene passata agli argomenti formali. Quindi gli argomenti formali lavorano su una copia del valore originale, non sul valore originale stesso, ecco perché i cambiamenti fatti dentro func_1() non si riflettono dentro main(). Questo processo è noto come passaggio di argomenti usando Call by Value, discuteremo questo concetto più in dettaglio nei prossimi capitoli.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.