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 110 — #148<br />
✐<br />
Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />
procesador, pero hay situaciones <strong>en</strong> las cuales el compilador debe estar advertido de<br />
que está tratando un nombre como si fuese un tipo, y por eso typedef es es<strong>en</strong>cial.<br />
int* x, y;<br />
Esto g<strong>en</strong>era <strong>en</strong> realidad un int* que es x, y un int (no un int*) que es y. Esto<br />
significa que el * añade a la derecha, no a la izquierda. Pero, si utiliza un typedef:<br />
typedef int* IntPtr;<br />
IntPtr x, y;<br />
Entonces ambos, x e y son del tipo int*.<br />
Se puede discutir sobre ello y decir que es más explícito y por consigui<strong>en</strong>te mas<br />
legible evitar typedefs para los tipos primitivos, y de hecho los programas se vuelv<strong>en</strong><br />
difíciles de leer cuando se utilizan demasiados typedefs. De todos modos, los<br />
typedefs se vuelv<strong>en</strong> especialm<strong>en</strong>te importantes <strong>en</strong> C cuando se utilizan con struct.<br />
3.8.2. Usar struct para combinar variables<br />
Un struct es una manera de juntar un grupo de variables <strong>en</strong> una estructura.<br />
Cuando se crea un struct, se pued<strong>en</strong> crear varias instancias de este «nuevo» tipo<br />
de variable que ha inv<strong>en</strong>tado. Por ejemplo:<br />
//: C03:SimpleStruct.cpp<br />
struct Structure1 {<br />
char c;<br />
int i;<br />
float f;<br />
double d;<br />
};<br />
int main() {<br />
struct Structure1 s1, s2;<br />
s1.c = ’a’; // Select an elem<strong>en</strong>t using a ’.’<br />
s1.i = 1;<br />
s1.f = 3.14;<br />
s1.d = 0.00093;<br />
s2.c = ’a’;<br />
s2.i = 1;<br />
s2.f = 3.14;<br />
s2.d = 0.00093;<br />
} ///:~<br />
La declaración de struct debe acabar con una llave. En main(), se crean dos<br />
instancias de Structure1: s1 y s2. Cada una de ellas ti<strong>en</strong>e su versión propia y separada<br />
de c, I, f y d. De modo que s1 y s2 repres<strong>en</strong>tan bloques de variables completam<strong>en</strong>te<br />
indep<strong>en</strong>di<strong>en</strong>tes. Para seleccionar uno de estos elem<strong>en</strong>tos d<strong>en</strong>tro de s1 o<br />
s2, se utiliza un ., sintaxis que se ha visto <strong>en</strong> el cápitulo previo cuando se utilizaban<br />
objetos class de <strong>C++</strong> - ya que las clases surgían de structs, de ahí provi<strong>en</strong>e esta<br />
sintaxis.<br />
110<br />
✐<br />
✐<br />
✐<br />
✐