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 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 />

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

Saved successfully!

Ooh no, something went wrong!