Chiama per valore e chiama per riferimento in lingua C

Chiama per valore e chiama per riferimento in lingua C

La funzione è un concetto molto importante nella lingua C. La funzione è un pezzo di codice che ci aiuta a eseguire una determinata azione. Sulla base della sua definizione, la funzione può essere divisa in quattro tipi.

Questo si basa sull'output di input e restituzione delle funzioni.

  1. Ingresso nessuno e output nessuno.
  2. Inserisci un certo valore e output nessuno.
  3. Inserisci nessuno e output di un valore.
  4. Inserisci un certo valore e output un valore.

Nell'argomento di oggi, discuteremo di chiamare per valore e chiamata per riferimento. Questi argomenti sono totalmente basati sulla classificazione della funzione.

Esempio di programmazione 1:

In questo esempio di programmazione, vedremo il meccanismo di chiamata per valore.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#includere
int add (int, int); // Prototipo di dichiarazione di funzione.
int main ()

int s, x, y;
printf ("immettere 2 numeri");
scanf (" %d %d", & x, & y);
s = add (x, y); // chiamata funzione.
printf ("somma è %d", s);
restituzione 0;

int add (int a, int b) // Definizione di funzione e passando il valore attraverso la funzione.

int c;
c = a + b;
ritorno c;

Produzione:

Spiegazione:

Questo esempio di programmazione è l'esempio ideale di chiamata per valore. È l'esempio di prende qualcosa e restituisce qualcosa.

Inserisci un certo valore e output Nessuno è lo stesso COME L'input nessuno e l'output di un valore. L'unica differenza è che, come è per natura che prende qualcosa, quindi il valore di due numeri deve essere passato nella funzione di chiamata. Sono chiamati argomenti reali.

Oppure, l'utente prende il valore dalla tastiera utilizzata dalla funzione principale (). Il valore viene quindi passato alla funzione Add (). Questi valori sono chiamati argomenti formali.

Quindi, è un tipo di chiamato dal valore esempio. Altrimenti, la procedura di restituzione è la stessa delle riprese, restituisce qualcosa della procedura.

Esempio di programmazione 2:

Qui vedremo un altro esempio di chiamata per valore applicando prende qualcosa e non restituisce nulla di procedura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#includere
void aggiungi (int, int); // Dichiarazione della funzione a livello globale
int main ()

int x, y;
void aggiungi (int, int); // Dichiarazione di funzione a livello locale
printf ("immettere 2 numeri");
scanf (" %d %d", & x, & y); // Argomenti effettivi
Aggiungi (x, y);
restituzione 0;

void aggiungi (int x, int y) // argomenti formali

int c;
c = x + y;
printf ("somma è %d", c);

Produzione:

Spiegazione:

Se vogliamo aggiungere i due valori di due variabili dichiarate all'interno del principale (). Aggiungi questo in un nome di funzione diverso Aggiungi (). Quindi, usiamo qualcosa che non restituisce nulla metodo. In questo caso nella funzione principale, il valore di x, y viene passato alla funzione aggiuntiva quando add () sta chiamando. Perché questo può essere nominato come Chiama per valore.

Ogni volta che passiamo il valore come argomento a una funzione di chiamata, questi argomenti sono chiamati argomenti effettivi.

Per definizione, all'interno della parentesi di una funzione quando dichiariamo la variabile che riceverà il valore della variabile che viene passata dalla funzione di chiamata è chiamata argomento formale.

Il nome della variabile dell'argomento effettivo e dell'argomento formale può essere lo stesso perché il compilatore sa quella variabile x, y sono dichiarati all'interno della funzione principale () e x, y Dichiarati in add () sono variabili diverse.

Nella funzione di chiamata, passiamo semplicemente il valore delle variabili dichiarate all'interno di Main (). Per questo scriviamo aggiungi (x, y);

Esempio di programmazione 3:

Qui vedremo un esempio di chiamata per indirizzo applicando qualcosa e restituirebbe qualcosa di procedura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#includere
int add (int *, int *); // Dichiarazione del prototipo di funzione a livello globale
int main ()

int s, x, y;
printf ("Immettere due numeri:");
scanf (" %d %d", & x, & y);
s = aggiungi (& x, & y); // Passando l'indirizzo delle variabili.
printf ("La somma è: %d \ n", s);
restituzione 0;

int add (int *a, int *b)

int c;
c = *a + *b;
restituzione (c);

Produzione:

Spiegazione:

Questo è un esempio di chiamata per riferimento. A volte nel nostro programma si verifica una situazione quando non siamo in grado di passare il valore della variabile attraverso la funzione. Dobbiamo passare l'indirizzo di queste variabili per accedervi. Si chiama chiamata per riferimento.

Qui, passiamo l'indirizzo di Variabile A, variabile B All'interno della funzione Aggiungi per sommare i valori di Variabile A, variabile B.

Esempio di programmazione 4:

Qui vedremo un altro esempio di chiamata per indirizzo applicando qualcosa e restituisce qualcosa di procedura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#includere
int swap (int *, int *);
int main ()

int p = 56;
int q = 22;
printf ("Prima di scambiare il valore di intero p: %d \ n", p);
printf ("prima di scambiare il valore dell'intero Q: %d \ n", q);
swap (& p, & q); // Chiama la funzione.
printf ("Dopo aver scambiato il valore di intero p: %d \ n", p);
printf ("Dopo aver scambiato il valore di intero q: %d \ n", q);
restituzione 0;

int swap (int *x, int *y) // Passando l'indirizzo delle variabili.

int t; / * variabile temporanea per archiviare il valore della prima variabile */
t = *x;
*x = *y;
*y = t;

Produzione:

Spiegazione:

Questo è un esempio di chiamata per riferimento. A volte nel nostro programma si verifica una situazione quando non siamo in grado di passare il valore della variabile attraverso la funzione. Dobbiamo passare l'indirizzo di queste variabili per accedervi. Si chiama chiamata per riferimento.

Qui, passiamo l'indirizzo di Variabile A, variabile B All'interno della funzione Swap () per scambiare i valori di Variabile A, variabile B. Di conseguenza il valori di a, b sono scambiati tramite la chiamata per riferimento.