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 862.000+ trabalhos acadêmicosPor: leylapris • 24/4/2014 • Seminário • 3.056 Palavras (13 Páginas) • 334 Visualizações
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>
...