TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Funções: Passando parâmetros por valor / referência em C / C ++

Seminário: Funções: Passando parâmetros por valor / referência em C / C ++. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  24/4/2014  •  Seminário  •  3.056 Palavras (13 Páginas)  •  279 Visualizações

Página 1 de 13

Funções: Passagem de parâmetros por valor/referência em C/C++

19 ComentáriosPublicado por Graciano Torrão em Maio 19, 2008

Vou partir do princípio que todos sabem um pouco de linguagem C/C++ e que compreendem a forma de criação e utilização de funções. Também vou tentar escrever o mínimo possível e passar a ideia através de quatro exemplos muito simples, sempre à volta da clássica função troca.

Função Troca: recebe dois valores a e b, e troca os respectivos conteúdos.

Passagem de parâmetros por valor: A função recebe uma cópia da variável que é fornecida quando é invocada. Todas as alterações feitas dentro da função não vão afectar os valores originais.

Passagem de parâmetros por referência: Neste caso o que é enviado para a função é uma referência às variáveis utilizadas, e não uma simples cópia, pelo que as alterações realizadas dentro da função irão certamente alterar os valores contidos nessas variáveis.

Exemplo 1 – Passagem de parâmetros por valor – Linguagem C

1

2

3

4

5

6

7

8

9

10

11

12

13

14 #include<stdio.h>

void troca(int a, int b){

int temp;

temp=a;

a=b;

b=temp;

}

int main(){

int a=2,b=3;

printf("Antes de chamar a função :\na=%d\nb=%d\n",a,b);

troca(a,b);

printf("Depois de chamar a função:\na=%d\nb=%d\n",a,b);

return 0;

}

Apesar da troca dentro da função, os valores originais não sofreram alterações.

Exemplo 2 – Passagem de parâmetros por referência – Linguagem C

Contradizendo o título, em C só existe a passagem de parâmetros por valor (obrigatório o uso de apontadores).

1

2

3

4

5

6

7

8

9

10

11

12

13

14 #include<stdio.h>

void troca(int *a, int *b){

int temp;

temp=*a;

*a=*b;

*b=temp;

}

int main(){

int a=2,b=3;

printf("Antes de chamar a função :\na=%d\nb=%d\n",a,b);

troca(&a,&b);

printf("Depois de chamar a função:\na=%d\nb=%d\n",a,b);

return 0;

}

A troca dentro da função reflecte-se nos valores originais.

Exemplo 3 – Passagem de parâmetros por valor – Linguagem C++

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15 #include<iostream>

using namespace std;

void troca(int a, int b){

int temp;

temp=a;

a=b;

b=temp;

}

int main(){

int a=2,b=3;

cout<<"Antes de chamar a função :\na="<<a<<"\nb="<<b<<endl;

troca(a,b);

cout<<"Depois de chamar a função :\na="<<a<<"\nb="<<b<<endl;

return 0;

}

Situação semelhante à apresentada no exemplo 1.

Exemplo 4 – Passagem de parâmetros por referência – Linguagem C++

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15 #include<iostream>

...

Baixar como (para membros premium)  txt (18 Kb)  
Continuar por mais 12 páginas »
Disponível apenas no TrabalhosGratuitos.com