Referência
Considere o seguinte código:
char var = 'y';A saída é: z z
A primeira declaração no código começa com a declaração e a atribuição à variável de char, var, o valor, 'y'. A segunda declaração tem uma segunda variável chamada ref. Ainda é do tipo, char. No entanto, aqui, há o símbolo entre char e a variável, referência. Não importa se e estão mais próximos de char ou de referência.
Para ref é atribuído a variável, var. O que isto significa? Por causa de e entre char e ref, ref e var se tornam nomes alternativos para o mesmo local de memória que tem o personagem, 'y'. Agora, ref ou var pode ser usado para alterar o valor no local da memória. Quando isso acontece, ambos VAR e Ref retornariam o mesmo valor. No código acima, o REF foi usado para alterar o valor.
No código a seguir, o conteúdo do mesmo local de memória, referido por VAR e REF, é alterado através do VAR:
char var = 'y';A saída é a mesma: z z
Uma variável de referência é sinônimo de alguma variável original. A variável original em si, ainda é uma referência.
Pode haver mais de uma referência a uma variável original, como mostra o código a seguir:
char var = 'y';A saída é: z z z
Para ter uma referência, atribua uma variável original a uma nova variável; na declaração da nova variável, tem e entre o tipo e a nova variável.
A vantagem de usar a variável de referência é que existe apenas uma cópia do valor na memória, para os diferentes nomes de variáveis (sinônimos). Com a programação normal em C ++, se os diferentes locais de memória não forem necessários, e cada variável tiver seu próprio local de memória, com o mesmo valor, isso seria desperdício de memória.
Vetor e referência
Vector é uma classe a partir da qual os objetos vetoriais são criados (instanciados). Para usar a classe vetorial, a biblioteca vetorial deve ser incluída no programa. Existe a variável de objeto vetorial original. Para isso, outras variáveis de referência (sinônimo) podem ser associadas. Fazer uma variável de referência vetorial é feita na declaração, como no objeto fundamental acima (char). O programa a seguir ilustra o seguinte:
#incluirA biblioteca vetorial está incluída no programa. Um vetor de strings está pretendido, portanto a biblioteca de cordas também está incluída. Observe o uso e a posição de e na segunda e terceira declarações de vetor. Todas as três variáveis de objeto vetor.
Vtrref1 e Vtrref2 são usados em um programa da mesma maneira que a VTR, sem preceder nenhum com &. Em outras palavras, VTR [5], Vtrref1 [5] e Vtrref2 [5] World retornam o mesmo valor localizado no mesmo local de memória.
Vantagem de usar um vetor de referência
O conteúdo de um objeto vetorial pode ser muito longo. Geralmente não é desejável ter várias cópias da mesma lista longa na memória. De tempos em tempos, é desejável ter duas referências do mesmo vetor na memória. Isso é particularmente útil ao passar um vetor para uma função. Se o vetor não for aprovado por referência (ou ponteiro), haverá duas cópias do mesmo vetor na memória no programa. Ou seja, o corpo da função terá uma cópia do vetor na memória que é diferente do vetor original fora do corpo da função. Uma maneira de evitar essas duas cópias, mas ainda ter duas variáveis, é passar por referência. Dessa forma, a variável no corpo da função e a variável fora do corpo da função se refeririam ao mesmo vetor.
Passando um vetor por referência a uma função
É simples passar um vetor por referência a uma função. Para fazer isso, tenha o vetor original fora da função; Deixe o parâmetro da definição da função ser a declaração do vetor com os ampers-e (&), entre o tipo de vetor e o nome do parâmetro. O nome do parâmetro do vetor e o nome original do vetor podem ser diferentes. O nome original do vetor é o argumento da chamada de função. Dessa maneira, o nome do vetor no corpo da função e o nome do vetor fora do corpo da função são dois nomes diferentes que se referem ao mesmo vetor.
Imagine um vetor de nomes de animais. O título para o programa seria:
#incluirO vetor fora da função pode ser:
vetorA função do interesse pode ser:
void fn (vetorNeste ponto, o nome do vetor fora da função é os animais, e o nome do vetor dentro da função é VTR. Ambos os nomes se referem ao mesmo objeto vetorial na memória. Se algum elemento do vetor for alterado dentro da função, a mudança será vista na variável vetorial fora da função. Se algum elemento do vetor for alterado fora da função, a mudança será vista na variável vetorial dentro da função. Nenhuma mudança foi feita neste programa, embora. A função simplesmente exibe o conteúdo do vetor, que é o mesmo dentro da função e fora da função. Observe o uso e a posição do símbolo e na declaração de parâmetro. A função principal C ++ pode ser:
int main ()O nome variável do vetor fora da função é o argumento da chamada de função. A saída é:
tigre, lobo, leão, girafa, urso,Nota: Assim que a função começar a executar, a seguinte declaração é feita na função:
vetorEsta declaração é muito semelhante a uma declaração de objeto fundamental acima, que é:
char & ref = var;Conclusão
Um nome normal e o nome referenciado de um vetor são sinônimos do mesmo vetor. Isso significa que eles se referem ao mesmo local de memória. Para passar um vetor para uma função por referência, a declaração de parâmetro do vetor nos parênteses da função precisa ter e entre o tipo de vetor e o nome do vetor. Este nome nos parênteses é oficialmente o nome referenciado. Na chamada de função, o nome normal da variável vetor original fora da definição da função se torna o argumento da função. Os dois nomes podem ser diferentes. Na definição da função, e não precedeu o nome do vetor.