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 112 — #150<br />
✐<br />
Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />
En realidad, el nombre struct no ti<strong>en</strong>e que ser lo mismo que el nombre typedef,<br />
pero normalm<strong>en</strong>te se hace de esta manera ya que ti<strong>en</strong>de a simplificar las cosas.<br />
Punteros y estructuras<br />
En los ejemplos anteriores, todos los structs se manipulan como objetos. Sin<br />
embargo, como cualquier bloque de memoria, se puede obt<strong>en</strong>er la dirección de un<br />
objeto struct (tal como se ha visto <strong>en</strong> SelfRefer<strong>en</strong>tial.cpp). Para seleccionar<br />
los elem<strong>en</strong>tos de un objeto struct <strong>en</strong> particular, se utiliza un ., como se ha visto<br />
anteriorm<strong>en</strong>te. No obstante, si ti<strong>en</strong>e un puntero a un objeto struct, debe seleccionar<br />
un elem<strong>en</strong>to de dicho objeto utilizando un operador difer<strong>en</strong>te: el ->. A continuación,<br />
un ejemplo:<br />
//: C03:SimpleStruct3.cpp<br />
// Using pointers to structs<br />
typedef struct Structure3 {<br />
char c;<br />
int i;<br />
float f;<br />
double d;<br />
} Structure3;<br />
int main() {<br />
Structure3 s1, s2;<br />
Structure3* sp = &s1;<br />
sp->c = ’a’;<br />
sp->i = 1;<br />
sp->f = 3.14;<br />
sp->d = 0.00093;<br />
sp = &s2; // Point to a differ<strong>en</strong>t struct object<br />
sp->c = ’a’;<br />
sp->i = 1;<br />
sp->f = 3.14;<br />
sp->d = 0.00093;<br />
} ///:~<br />
En main(), el puntero sp está apuntando inicialm<strong>en</strong>te a s1, y los miembros de<br />
s1 se inicializan seleccionándolos con el -> (y se utiliza este mismo operador para<br />
leerlos). Pero luego sp apunta a s2, y esas variables se inicializan del mismo modo.<br />
Como puede ver, otro b<strong>en</strong>eficio <strong>en</strong> el uso de punteros es que pued<strong>en</strong> ser redirigidos<br />
dinámicam<strong>en</strong>te para apuntar a objetos difer<strong>en</strong>tes, eso proporciona más flexibilidad<br />
a sus programas, tal como verá.<br />
De mom<strong>en</strong>to, es todo lo que debe saber sobre struct, pero se s<strong>en</strong>tirá mucho<br />
más cómodo con ellos (y especialm<strong>en</strong>te con sus sucesores mas pot<strong>en</strong>tes, las clases) a<br />
medida que progrese <strong>en</strong> este libro.<br />
3.8.3. Programas más claros gracias a <strong>en</strong>um<br />
Un tipo de datos <strong>en</strong>umerado es una manera de asociar nombres a números, y<br />
por consigui<strong>en</strong>te de ofrecer más significado a algui<strong>en</strong> que lea el código. La palabra<br />
reservada <strong>en</strong>um (de C) <strong>en</strong>umera automáticam<strong>en</strong>te cualquier lista de id<strong>en</strong>tificadores<br />
que se le pase, asignándoles valores de 0, 1, 2, etc. Se pued<strong>en</strong> declarar variables <strong>en</strong>um<br />
(que se repres<strong>en</strong>tan siempre como valores <strong>en</strong>teros). La declaración de un <strong>en</strong>um se<br />
112<br />
✐<br />
✐<br />
✐<br />
✐