|
|
|
|
|
Dicas
|
|
Visual Basic (Declarações/Variáveis)
|
|
|
Título da Dica: parametros ByRef e ByVal
|
|
|
|
Postada em 5/9/2002 por Darlan Oliveira
Obs: até a versao .NET as passagem de parametros nas funcoes por default* são por referencia por exemplo:
no modulo BAS declare: sub funcao(i as integer) i = i + 1 end sub
//que equivale a
sub funcao(byRef i as integer) i = i + 1 end sub
no form crie um botao e dentro do evento click coloque
dim i as integer i = 1 call funcao(i) msgbox i ///i é igual a 2
------------------- agora mude a sintaxe da funcao para: sub funcao(ByVal i as integer) i = i + 1 end sub note que apenas o byVal entrou no lugar do ByRef chamamos a mesma rotina:
dim i as integer i = 1 call funcao(i) msgbox i ///i é igual a 1
observem a diferenca. Isto acontece pois o parametro i no primeiro caso foi passado atraves do que se chama ponteiro, ou seja, ele apontou para a posicao de memoria. Quando se cria uma variavel ela armazena uma posicao de memoria. ex:
estrutura de uma variavel
label - posicao de memoria - valor i xx - 1
estrutura de um ponteiro
label - posicao de memoria que esta apontada i - xx
ou seja, NÃO há valor em um ponteiro e sim apenas um apontamento para a posicao de memoria onde esta o valor e quando se muda o valor do conteudo do ponteiro esta se mudando na verdade o valor de onde ele aponta, capit!
quem quiser saber mais sobre esse assunto mande um e-mail para darlan@atlas.ucpel.tche.br
*default vem do frânces 'na falta de': isto que é cultura :)
|
|
|
|
|