¿Cuáles son las referencias y cómo es diferente de punteros?

Aprender: La diferencia entre las referencias [utilizado preferentemente en C ++] y punteros [utilizado preferentemente en C / C ++] y lo haría en última instancia ayuda para responder a ++ pregunta de la entrevista C.

Este artículo consiste en la descripción de ambas referencias [en C ++] y punteros [prefiere en C / C ++]. La descripción finalmente conducir a una conclusión que trazar una línea diferencia entre los punteros y de referencia. Este artículo no concluye que uno de ellos no se debe preferir. Será simplemente ofrecerle alguna descripción básica sobre los temas.

Las referencias en la variable C ++

Una referencia es básicamente nada más que un nombre de alias o en términos más simples otro nombre declaradas para una variable preexistente. Con el fin de declarar una referencia o un alias la dirección de ( y ) se utiliza. Este operador coloca antes de la variable en la instrucción de declaración. Después se declara una referencia a continuación, esa variable puede ser llamado, ya sea usando el nombre de la variable original o el nombre de alias dado a esa variable usando y operador.

En palabras más simples, por no decir un nombre de variable int a = 10; ser una variable declarada. Esta variable es una etiqueta de marca una posición de memoria. Del mismo modo, cuando nos declaramos decir una referencia int & r = a; esta es otra etiqueta que lleva ese mismo lugar de memoria para que podamos acceder a esa memoria llamando a cualquiera de estos dos nombres de variables.

Las referencias son similares a los punteros o en la forma más simple de entender que son punteros débiles básicamente desarrollados con el propósito de está en funciones, ya que actúan como parámetros formales [las variables declaradas dentro del paréntesis declaración de la función] en varias funciones a la referencia de soporte que pasa en funciones. Cuando una referencia se pasa a una función, la función funciona en la copia original de la variable en lugar de valores duplicados como en funciones de valor que pasa. Esto nos permite mostrar las operaciones realizadas dentro de la función en la parte externa de la función. También se utilizan las referencias de los argumentos de funciones y valores return.

C ++ implementación de referencias

#include <iostream>
using namespace std;
int main()
{
int i;
double d;
int &a=i;
double &b=d;
i=20;
d=0.97;
cout<<"Value of original int variable i:"<<i<<endl;
cout<<"Value of reference int variable a:"<<a<<endl;
cout<<"Value of original double variable d:"<<d<<endl;
cout<<"Value of reference double variable b:"<<b<<endl;
return 0;
}

salida

    Value of original  int variable i:20
Value of reference int variable a:20
Value of original double variable d:0.97
Value of reference double variable b:0.97

Hay dos conceptos básicos que un programador de C ++ debe tener conocimiento sobre el tema de las referencias:

a) Las referencias como parámetros

Así es como una función de llamada por referencia funciona utilizando referencias.

Ejemplo:

#include <iostream>
using namespace std;

void swap(int&a, int&b)
{
int t;
t=a;
a=b;
b=t;
}
int main()
{
//Here x,y are local variables
int x=100;
int y=200;
cout<<"Initial value of x:"<<x<<endl;
cout<<"Initial value of y:"<<y<<endl;
//Calling the function swap
swap(x,y);
cout<<"Value of x after swapping:"<<x<<endl;
cout<<"Value of y after swapping:"<<y<<endl;
return 0;
}

salida

    Initial value of x:100
Initial value of y:200
Value of x after swapping:200
Value of y after swapping:100

b) las referencias como valores Return

un programa en C ++ también puede return una referencia como que devuelve un puntero.

Ejemplo

#include <iostream>
#include <ctime>
using namespace std;
double v[]={11.5,20.1,33.9,45.6,50.2};
double &setValue(int i)
{
// Returns reference to variable i
return v[i];
}
int main()
{
cout<<"Initial values of v:"<<endl;
for(int i=0;i<5;i++)
{
cout<<"v["<<i<<"] =";
cout<<v[i]<<endl;
}
setValue(2)=12.9; //Changes 3rd value
setValue(4)=6.7; //Changes 5th value
cout<<"v after change:"<<endl;
for(int i=0;i<5;i++)
{
cout<<"v["<<i<<"] =";
cout<<v[i]<<endl;
}
return 0;
}

salida

    Initial values of v:
v[0] =11.5
v[1] =20.1
v[2] =33.9
v[3] =45.6
v[4] =50.2
v after change:
v[0] =11.5
v[1] =20.1
v[2] =12.9
v[3] =45.6
v[4] =6.7


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *