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

Passagem De Parametros

Trabalho Escolar: Passagem De Parametros. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  25/3/2014  •  802 Palavras (4 Páginas)  •  321 Visualizações

Página 1 de 4

Passagem por referência – É passada para a função uma referência da variável, sendo possível alterar o conteúdo da variável original usando-se esta referência.

Na linguagem C a passagem por referência é implementada com o uso de ponteiros.

Usando ponteiros (também chamados de apontadores) é possível alterar os valores das variáveis passadas como argumentos para uma função.

A função utilizada dessa forma é denominada função com passagem por referência. Nesse tipo de função, os argumentos passam os endereços de memória para os parâmetros declarados na função. Sendo assim, os parâmetros que recebem os valores passados obrigatoriamente tem que ser ponteiros já que irão receber um endereço de memória.

As alterações feitas dentro da função tem efeito direto nas variáveis passadas como argumentos na chamada. Isto proporciona a oportunidade de retornar vários valores em uma única função já que as alterações ocorrem diretamente nas variáveis.

Uma função comunica-se com o "mundo externo" de duas maneiras: mudando os valores que são

globais à função ou através de passagem e retorno de valores. A informação pode ser movida da/para função de

duas maneiras:

• Uma cópia da variável inteira é feita;

• Somente o endereço da variável é transferido pelos limites.

O primeiro método é chamado passagem por valor. Já que é feita uma cópia do argumento (ou

variável), esta pode ser usada e alterada dentro da função sem afetar a variável da qual ela foi gerada.

Entretanto, quando uma função precisa ser capaz de alterar os valores das variáveis usadas como argumentos,

os parâmetros precisam ser explicitamente declarados como tipos ponteiros. Assim, utiliza-se o segundo método

que é chamado de passagem por nome, quando um ponteiro é passado, ou de passagem por referência,

quando referências são usadas. Em ambos os casos um endereço é manipulado.

Os endereços são passados por duas razões. A primeira é simplesmente pela eficiência; sabendo-se que

a variável será somente lida, então, geralmente é mais rápido passar o endereço quando se usam objetos

maiores do que um ponteiro. Existe também um benefício adicional em se passar um endereço. No caso de

objetos, passa-se o endereço para um objeto inicializado e o tamanho do endereço é sempre o mesmo, assim

não há problema envolvendo cópia e inicialização.

A segunda razão para passar um endereço é manipular fisicamente o objeto ou variável para o qual o

endereço aponta, isto é, pode-se alterar uma variável ou objeto que é externo a uma função. Normalmente, os

resultados de uma chamada de função devem ser expressos pelo valor de retorno da função, mas existem

situações em que isso não é satisfatório. Por exemplo, a função pode precisar alterar mais de um objeto. Se os

endereços do objeto são passados, a função pode afetar diretamente qualquer número de objetos na função

chamadora.

Na passagem por nome, são explicitamente declarados ponteiros e passados endereços. Já passar por

referência é o mesmo que declarar um argumento para ser um ponteiro e, então, passar um endereço. Com

referências, entretanto, o compilador faz todo o trabalho para o usuário: ele força o endereço a ser passado

dentro de uma função, ainda que o usuário não pegue o endereço explicitamente. Dentro da função, pode-se

manipular os itens como se fossem objetos. Isso é um grande avanço, uma vez que muitos erros quando se

usam bibliotecas da linguagem C, podem ser atribuídos à confusão sobre como passar um endereço. Como o

compilador da linguagem C++ manipula os detalhes, quando se passa argumentos por referência, muito poucos

erros ocorrem. Também é muito mais eficiente passar um ponteiro do que copiar o objeto inteiro dentro da

função chamada.

Entretanto, existem casos onde é preciso uma cópia de um objeto a ser criado dentro da janela da

função. Pode-se necessitar modificar o objeto sem querer que o original seja tocado. Nesses casos, deve-se

passar o objeto por valor. Se o compilador passa um int ou float, por exemplo, ele sabe o que fazer: uma cópia

Passagem por Referência

A passagem por referência não cria duas variáveis com valores iguais aos que foram passados entre parentesis. O que ela faz é criar um atalho, dentro do procedimento ou função, para as variáveis originais. Deste modo, qualquer alteração feita dentro do procedimento é reflectida mesmo depois do procedimento ter terminado.

Para exemplo, fica o programa anterior, com apenas uma pequena alteração:

Código (Pascal):

program parametro;

var

valor1,valor2:integer;

procedure DuplicaValores(var v1,v2:integer);

begin

writeln('2º - Dentro: ',v1,' / ',v2);

v1:=v1*2;

v2:=v2*2;

writeln('3º - Dentro: ',v1,' / ',v2);

end;

begin

valor1:=6;

valor2:=4;

writeln('1º - Fora: ',valor1,' / ',valor2);

DuplicaValores(valor1,valor2);

writeln('4º - Fora: ',valor1,' / ',valor2);

end.

...

Baixar como  txt (5 Kb)  
Continuar por mais 3 páginas »