Appelez par valeur et appelez par référence dans le langage C

Appelez par valeur et appelez par référence dans le langage C

La fonction est un concept très important dans le langage C. La fonction est un morceau de code qui nous aide à exécuter certaines action. En fonction de sa définition, la fonction peut être divisée en quatre types.

Ceci est basé sur la fonction prenant la sortie et la sortie de retour.

  1. Entrée Aucun et sortie Aucun.
  2. Saisir une certaine valeur et une sortie sans.
  3. Entrez aucun et sortie de la valeur.
  4. Saisir une certaine valeur et sortir une valeur.

Dans le sujet d'aujourd'hui, nous discuterons de l'appel par valeur et de l'appel par référence. Ces sujets sont totalement basés sur la classification de la fonction.

Exemple de programmation 1:

Dans cet exemple de programmation, nous verrons le mécanisme d'appel par valeur.

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#inclure
int add (int, int); // Prototype de déclaration de fonction.
int main ()

int s, x, y;
printf ("Entrée 2 numéros");
scanf ("% d% d", & x, & y);
S = add (x, y); // appel de fonction.
printf ("Sum is% d", s);
retour 0;

int add (int a, int b) // Définition de la fonction et passant la valeur à travers la fonction.

INT C;
c = a + b;
Retour C;

Sortir:

Explication:

Cet exemple de programmation est l'exemple idéal de l'appel par valeur. C'est l'exemple de prend quelque chose et retourne quelque chose.

Saisir une valeur et une sortie et une sortie aucun le programme est le même comme l'entrée non et la sortie de la valeur. La seule différence est que, comme c'est par nature en prenant quelque chose, donc la valeur de deux nombres doit être transmise en fonction d'appel. Elles sont appelées arguments réels.

Ou, l'utilisateur prend la valeur du clavier utilisé par la fonction main (). La valeur est ensuite transmise à la fonction Add (). Ces valeurs sont appelées arguments formels.

Donc, c'est un type de appelé par valeur exemple. Sinon, la procédure de retour est la même que la procédure ne prend rien, renvoie quelque chose.

Exemple de programmation 2:

Ici, nous verrons un autre exemple de méthode d'appel par valeur en appliquant ne prend quelque chose et ne renvoie rien à procédure.

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#inclure
void add (int, int); // Déclaration de fonction dans le monde
int main ()

int x, y;
void add (int, int); // Déclaration de fonction localement
printf ("Entrée 2 numéros");
scanf ("% d% d", & x, & y); // Arguments réels
ajouter (x, y);
retour 0;

void add (int x, int y) // arguments formels

INT C;
C = x + y;
printf ("sum is% d", c);

Sortir:

Explication:

Si nous voulons ajouter les deux valeurs de deux variables qui sont déclarées à l'intérieur du principal (). Ajouter ceci dans un nom de fonction différent ajouter (). Ensuite, nous utilisons ne prend quelque chose ne renvoie rien à la méthode. Dans ce cas, dans la fonction principale, la valeur de x, y est transmise à la fonction ADD lorsque Add () appelle. Car cela peut être nommé comme appel par valeur.

Chaque fois que nous passons la valeur comme argument à une fonction d'appel, ces arguments sont appelés arguments réels.

Par définition, à l'intérieur de la parenthèse d'une fonction lorsque nous déclarons la variable qui recevra la valeur de la variable qui est adoptée par la fonction d'appel est appelée argument formel.

Le nom de la variable de l'argument réel et de l'argument formel peut être le même car le compilateur sait cette variable x, y sont déclarés dans la fonction main () et x, y déclarés dans Add () sont des variables différentes.

Dans la fonction d'appel, nous passons simplement la valeur des variables déclarées à l'intérieur de Main (). Pour cela, nous écrivons ajouter (x, y);

Exemple de programmation 3:

Ici, nous verrons un exemple d'appel par adresse en appliquant prend quelque chose et renvoie quelque chose.

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#inclure
int add (int *, int *); // Déclaration de prototype de fonction dans le monde
int main()

int s, x, y;
printf ("Entrez deux numéros:");
scanf ("% d% d", & x, & y);
s = add (& x, & y); // passant l'adresse des variables.
printf ("La somme est:% d \ n", s);
retour 0;

int add (int * a, int * b)

INT C;
c = * a + * b;
retour (c);

Sortir:

Explication:

Ceci est un exemple d'appel par référence. Parfois, dans notre programme, une situation se produit lorsque nous ne sommes pas en mesure de transmettre la valeur de la variable via la fonction. Nous devons passer l'adresse de ces variables pour y accéder. Il est appelé appel par référence.

Ici, nous passons l'adresse de variable a, variable b à l'intérieur de la fonction ADD pour résumer les valeurs de variable a, variable b.

Exemple de programmation 4:

Ici, nous verrons un autre exemple d'appel par adresse en appliquant prend quelque chose et renvoie quelque chose.

1
2
3
4
5
6
7
8
9
dix
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
#inclure
int swap (int *, int *);
int main ()

int p = 56;
int q = 22;
printf ("Avant d'échanger la valeur de l'entier p:% d \ n", p);
printf ("Avant d'échanger la valeur de l'entier q:% d \ n", q);
swap (& p, & q); // appelle la fonction.
printf ("après échanger la valeur de l'entier p:% d \ n", p);
printf ("après échanger la valeur de l'entier Q:% d \ n", q);
retour 0;

int swap (int * x, int * y) // passant l'adresse des variables.

int t; / * variable temporaire pour stocker la valeur de la 1ère variable * /
t = * x;
* x = * y;
* y = t;

Sortir:

Explication:

Ceci est un exemple d'appel par référence. Parfois, dans notre programme, une situation se produit lorsque nous ne sommes pas en mesure de transmettre la valeur de la variable via la fonction. Nous devons passer l'adresse de ces variables pour y accéder. Il est appelé appel par référence.

Ici, nous passons l'adresse de variable a, variable b à l'intérieur de la fonction swap () pour échanger les valeurs de variable a, variable b. En conséquence valeurs de a, b sont échangés par appel par référence.