Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 91 — #129<br />
✐<br />
3.6. Especificar la ubicación del espacio de almac<strong>en</strong>ami<strong>en</strong>to<br />
declarar d<strong>en</strong>tro de un bloque (no se pued<strong>en</strong> t<strong>en</strong>er variables de registro globales o<br />
estáticas). De todos modos, se pued<strong>en</strong> utilizar como un argum<strong>en</strong>to formal <strong>en</strong> una<br />
función (es decir, <strong>en</strong> la lista de argum<strong>en</strong>tos).<br />
En g<strong>en</strong>eral, no se debería int<strong>en</strong>tar influir sobre el optimizador del compilador, ya<br />
que probablem<strong>en</strong>te él hará mejor el trabajo de lo que lo pueda hacer usted. Por eso,<br />
es mejor evitar el uso de la palabra reservada register.<br />
3.6.3. Static<br />
La palabra reservada static ti<strong>en</strong>e varios significados. Normalm<strong>en</strong>te, las variables<br />
definidas localm<strong>en</strong>te a una función desaparec<strong>en</strong> al final del ámbito de ésta.<br />
Cuando se llama de nuevo a la función, el espacio de las variables se vuelve a pedir<br />
y las variables son re-inicializadas. Si se desea que el valor se conserve durante la<br />
vida de un programa, puede definir una variable local de una función como static<br />
y darle un valor inicial. La inicialización se realiza sólo la primera vez que se llama a<br />
la función, y la información se conserva <strong>en</strong>tre invocaciones sucesivas de la función.<br />
De este modo, una función puede «recordar» cierta información <strong>en</strong>tre una llamada<br />
y otra.<br />
Puede surgir la duda de porqué no utilizar una variable global <strong>en</strong> este caso. El<br />
<strong>en</strong>canto de una variable static es que no está disponible fuera del ámbito de la<br />
función, de modo que no se puede modificar accid<strong>en</strong>talm<strong>en</strong>te. Esto facilita la localización<br />
de errores.<br />
A continuación, un ejemplo del uso de variables static:<br />
//: C03:Static.cpp<br />
// Using a static variable in a function<br />
#include <br />
using namespace std;<br />
void func() {<br />
static int i = 0;<br />
cout