Ligue por valor e ligue por referência no idioma C

Ligue por valor e ligue por referência no idioma C

A função é um conceito muito importante na linguagem C. A função é um pedaço de código que nos ajuda a executar determinada ação. Com base em sua definição, a função pode ser dividida em quatro tipos.

Isso é baseado na função de entrada e retorno de saída.

  1. Entrar nenhum e saída nenhum.
  2. Insira algum valor e saída nenhum.
  3. Entrar nenhum e emitir algum valor.
  4. Insira algum valor e produza algum valor.

No tópico de hoje, discutiremos a chamada por valor e chamada por referência. Esses tópicos são totalmente baseados na classificação da função.

Exemplo de programação 1:

Neste exemplo de programação, veremos o mecanismo de chamada por valor.

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
#incluir
int add (int, int); // protótipo da declaração de função.
int main ()

int s, x, y;
printf ("Digite 2 números");
scanf (" %d %d", & x, & y);
s = add (x, y); // Chamada de função.
printf ("soma é %d", s);
retornar 0;

int add (int a, int b) // Definição de função e transmitindo o valor através da função.

int c;
c = a + b;
retornar c;

Saída:

Explicação:

Este exemplo de programação é o exemplo ideal de chamada por valor. É o exemplo de pega algo e retorna algo.

Inserir algum valor e saída nenhum programa é o mesmo como a entrada Nenhum e saída algum valor. A única diferença é que, como é por natureza, tomando algo, o valor de dois números deve ser aprovado na função de chamada. Eles são chamados argumentos reais.

Ou, o usuário pega o valor do teclado que é usado pela função main (). O valor então é passado para a função add (). Esses valores são chamados argumentos formais.

Então, é um tipo de chamado por valor exemplo. Caso contrário, o procedimento de retorno é o mesmo que não leva nada, retorna algo procedimento.

Exemplo de programação 2:

Aqui, veremos outro exemplo de método de chamada por valor aplicando pega algo e retorna nada procedimento.

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
#incluir
void add (int, int); // Declaração de função globalmente
int main ()

int x, y;
void add (int, int); // Declaração da função localmente
printf ("Digite 2 números");
scanf (" %d %d", & x, & y); // argumentos reais
add (x, y);
retornar 0;

void add (int x, int y) // argumentos formais

int c;
c = x + y;
printf ("soma é %d", c);

Saída:

Explicação:

Se quisermos adicionar os dois valores de duas variáveis ​​declaradas dentro do principal (). Adicione isso em um nome de função diferente add (). Então, usamos, leva algo de retorna nada método. Nesse caso na função principal, o valor de x, y é passado para a função add quando add () está chamando. Pois isso pode ser nomeado como ligue por valor.

Sempre que passamos o valor como um argumento para uma função de chamada, esses argumentos são chamados de argumentos reais.

Por definição, dentro dos parênteses de uma função, quando declaramos a variável que receberá o valor da variável que é aprovada pela função de chamada é chamada de argumento formal.

O nome da variável de argumento real e argumento formal pode ser o mesmo porque o compilador sabe que a variável x, y são declarados dentro da função main () e x, y declarados em add () são variáveis ​​diferentes.

Na função de chamada, apenas passamos o valor das variáveis ​​declaradas dentro de Main (). Para isso, escrevemos add (x, y);

Exemplo de programação 3:

Aqui, veremos um exemplo de chamada por endereço aplicando pega algo e retorna algo procedimento.

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
#incluir
int add (int *, int *); // Declaração de protótipo da função globalmente
int main ()

int s, x, y;
printf ("Digite dois números:");
scanf (" %d %d", & x, & y);
s = add (& x, & y); // Passando o endereço de variáveis.
printf ("A soma é: %d \ n", s);
retornar 0;

int add (int *a, int *b)

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

Saída:

Explicação:

Este é um exemplo de chamada por referência. Às vezes, em nosso programa, ocorre uma situação quando não somos capazes de passar o valor da variável através da função. Temos que passar no endereço dessas variáveis ​​para acessá -las. É chamado Call By Reference.

Aqui, passamos o endereço de variável A, variável b dentro da função Adicionar para somar os valores de variável A, variável b.

Exemplo de programação 4:

Aqui, veremos outro exemplo de chamada por endereço aplicando pega algo e retorna algo procedimento.

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
#incluir
int swap (int *, int *);
int main ()

int p = 56;
int q = 22;
printf ("Antes de trocar o valor do número inteiro p: %d \ n", p);
printf ("Antes de trocar o valor do número inteiro q: %d \ n", q);
troca (& p, & q); // Ligue para a função.
printf ("Depois de trocar o valor do número inteiro p: %d \ n", p);
printf ("Depois de trocar o valor do número inteiro q: %d \ n", q);
retornar 0;

int swap (int *x, int *y) // passando o endereço de variáveis.

int t; / * Variável temporária para armazenar o valor da 1ª variável */
t = *x;
*x = *y;
*y = t;

Saída:

Explicação:

Este é um exemplo de chamada por referência. Às vezes, em nosso programa, ocorre uma situação quando não somos capazes de passar o valor da variável através da função. Temos que passar no endereço dessas variáveis ​​para acessá -las. É chamado Call By Reference.

Aqui, passamos o endereço de variável A, variável b dentro da função swap () para trocar os valores de variável A, variável b. Como resultado Valores de A, B são trocados através de chamada por referência.