TUTORIAL: Pointer y referencias en las funciones.

  • genux
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Ene 22, 2010
  • Mensajes: 106
  • Loc: UK
  • Status: Offline

Nota Enero 28th, 2010, 4:44 am

Introducción


En la parte final de mi tutorial anterior aquí , Este es el tutorial acerca de pasar punteros y referencias a las funciones. Una función es sólo una estructura de conjunto de código que se puede llamar una y otra vez.

Examen de un puntero y de referencia



Un puntero es un valor de un lugar de memoria, y una referencia (dirección) es la ubicación de la memoria de una variable. Por ejemplo
Código: [ Select ]
int *pInt =NULL;
int intValue = 55;
pInt = &intValue;
  1. int *pInt =NULL;
  2. int intValue = 55;
  3. pInt = &intValue;

La pinta es un puntero que su variable también es una ubicación de memoria, pero su valor es el primero a NULL (nunca se sabe si el valor será otra cosa y no quiero señalar a un no sé área de la memoria) y luego intValue una variable normal se establece un valor de 55. La última parte es que el puntero tiene pinta de su valor establecido en una ubicación de memoria de intValue (a través de la referencia y / direcciones de símbolo).

Copia normal-value-of



La forma normal de pasar una variable a una función es que el parámetro de la función se pasa una copia de la variable y la función de los actos en la copia. por ejemplo,
Código: [ Select ]
int normalReturnMethod(int value)
{
  value = value +2;
  return (value);
}

int intValue = 10;

int newValue = normalReturnMethod(intValue);
cout << "new Value : " << newValue << " intValue : " << intValue;
  1. int normalReturnMethod(int value)
  2. {
  3.   value = value +2;
  4.   return (value);
  5. }
  6. int intValue = 10;
  7. int newValue = normalReturnMethod(intValue);
  8. cout << "new Value : " << newValue << " intValue : " << intValue;

con la salida que se
Código: [ Select ]
new Value = 12 int Value : 10

el valor en el parámetro de la función es simplemente una copia de la variable original y no puede afectar a la variable original, ya que tiene su sede propia memoria en el espacio de direcciones de memoria del programa. Que es una buena cosa.

Pasar un puntero y #40; ubicación de la memoria y #41; a una función



Cuando se le pasa una ubicación de memoria en los parámetros a una función del parámetro que en realidad apuntan a la variable que ha sido aprobado y, por consiguiente, toda modificación realizada a la variable de parámetro tendrá una consecuencia directa sobre los datos almacenados, que se aprobó. por ejemplo,
Código: [ Select ]
void pointerReturnMethod(int *pValue)
{
  *pValue +=2;
}
int intValue = 10;
pointerReturnMethod(&intValue);
cout << "intValue = " << intValue;
  1. void pointerReturnMethod(int *pValue)
  2. {
  3.   *pValue +=2;
  4. }
  5. int intValue = 10;
  6. pointerReturnMethod(&intValue);
  7. cout << "intValue = " << intValue;

la salida de este sería
Código: [ Select ]
intValue = 12

porque usted está pasando en la ubicación de memoria y por lo tanto la pValue * + = 2 incrementará los datos intValue.

Parámetro de referencia en una función de



La siguiente es una referencia (&) y estos parámetros son los que la diversión, ya que puede pasar en una variable sólo la copia de valor de la función, sino que actuará como un real parámetro de la función de puntero, ya que aún actúan sobre la de datos de la variable que pasa. por ejemplo,
Código: [ Select ]
void referenceReturnMethod(int &fValue)
{
  fValue +=4;
}

int intValue = 10;
referenceReturnMethod(intValue);
cout << "intValue = " << intValue;
  1. void referenceReturnMethod(int &fValue)
  2. {
  3.   fValue +=4;
  4. }
  5. int intValue = 10;
  6. referenceReturnMethod(intValue);
  7. cout << "intValue = " << intValue;

y la salida sería
Código: [ Select ]
intValue = 14

que puede causar algunos problemas cuando se está depurando, si usted cree que un parámetro pasado fue no ser "visitado" por la función, pero fue entonces lo que pensaba que la variable debe ser antes y después de la función no puede ser.

Conclusión



Si usted va a pasar parámetros a una función, en la función de asegurarse de que, o bien informar a la desarrolladora de que pueda actuar sobre el valor por ejemplo, en el nombre de función, o hacer el parámetro de una constante (constante) de tipo para que no se efectuada dentro de la función. Esta será mi próximo tutorial, acerca de los 3 lugares que usted puede tener una constante (constante) en una declaración de la función y lo que significan.

Que yo hago realmente quieres hacer algún comentario con respecto a cualquier tutorial / post, contesta o PM me .. encantado de ayudar, mejor para compartir el conocimiento.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Enero 28th, 2010, 4:44 am

Publicar Información

  • Total de mensajes en este tema: 1 mensaje
  • Moderador: Tutorial Writers
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC