Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 83 — #121<br />
✐<br />
3.4. Introducción a los tipos de datos<br />
Por supuesto, inicialm<strong>en</strong>te x es 47. Cuando se llama f(), se crea un espacio temporal<br />
para alojar la variable a durante la ejecución de la función, y el valor de x se<br />
copia a a, el cual es verificado mostrándolo por pantalla. Se puede cambiar el valor<br />
de a y demostrar que ha cambiado. Pero cuando f() termina, el espacio temporal<br />
que se había creado para a desaparece, y se puede observar que la única conexión<br />
que existía <strong>en</strong>tre a y x ocurrió cuando el valor de x se copió <strong>en</strong> a.<br />
Cuando está d<strong>en</strong>tro de f(), x es el objeto externo (mi terminología), y cambiar<br />
el valor de la variable local no afecta al objeto externo, lo cual es bastante lógico,<br />
puesto que son dos ubicaciones separadas <strong>en</strong> la memoria. Pero ¿y si quiere modificar<br />
el objeto externo Aquí es donde los punteros <strong>en</strong>tran <strong>en</strong> acción. En cierto s<strong>en</strong>tido, un<br />
puntero es un alias de otra variable. De modo que si a una función se le pasa un<br />
puntero <strong>en</strong> lugar de un valor ordinario, se está pasando de hecho un alias del objeto<br />
externo, dando la posibilidad a la función de que pueda modificar el objeto externo,<br />
tal como sigue:<br />
//: C03:PassAddress.cpp<br />
#include <br />
using namespace std;<br />
void f(int* p) {<br />
cout