13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!