You are on page 1of 6

1-VARIABLE TIPO STRUCT

Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de
la palabra clave struct.



"Variable" es una instancia de "mystruct" y no es necesario ponerla aqu. Se podra omitir
de la declaracin de "mystruct" y ms tarde declararla usando: struct mystruct variable;
Al igual que la mayora de los tipos de datos en C, las estructuras pueden contener
punteros y a su vez ser un puntero.

Struct con punteros

//: C03:SimpleStruct3.cpp
// Using pointers to structs
typedef struct Structure3 {
char c;
int i;
float f;
double d;
} Structure3;

int main() {
Structure3 s1, s2;
Structure3* sp = &s1;
sp->c = 'a';
sp->i = 1;
sp->f = 3.14;
sp->d = 0.00093;
sp = &s2; // Point to a different struct object
sp->c = 'a';
sp->i = 1;
sp->f = 3.14;
sp->d = 0.00093;
}




//: C03:SimpleStruct2.cpp
// Using typedef with struct
typedef struct {
char c;
int i;
float f;
double d;
} Structure2;

int main() {
Structure2 s1, s2;
s1.c = 'a';
s1.i = 1;
s1.f = 3.14;
s1.d = 0.00093;
s2.c = 'a';
s2.i = 1;
s2.f = 3.14;
s2.d = 0.00093;
} ///

Campos de bits
El mtodo que se utiliza en C para operar con bits est basado en las estructuras (structs).
Una estructura compuesta por bits se denomina campo de bits. Mediante las estructuras se
puede acceder fcilmente a un bit individual dentro de un byte, o a un grupo de varios bits.

Puede usarse para almacenar distintos valores en un mismo byte.
Ejemplo: Varias variables lgicas (1 Verdad, 0 Falso).
En las transmisiones es tpico transmitir informacin codificada en los bits de un byte.
Ejemplo: Para informar que la impresora no tiene papel, o que cierto dispositivo no est
disponible...
La forma general de definicin de un campo de bits es:




Ejemplo: Definicin de una estructura con campo de bits para el pixel de una imagen
Para un campo de bits de 2 bytes (int). Sus variables internas deben declararse como
unsigned int y su longitud puede variar entre 1 y 16. Por ejemplo:
struct s_bits
{
unsigned int mostrar: 1;
unsigned int rojo: 2;
unsigned int azul: 2;
unsigned int verde: 2;
unsigned int transparencia: 1;
};
Esta estructura define cinco variables. Dos de ellas (mostrar y transparencia) son de 1
bit, mientras que el resto son de 2 bits.
Se podra usar esta estructura u otra similar para codificar una imagen RGB de 16 colores,
especificando para cada pxel su color, si es o no transparente y si debe o no mostrarse.
Para acceder a cada variable del campo de bits se emplea la misma sintaxis que en
cualquier otra estructura de C, pero teniendo en cuenta que un bit slo puede tomar dos
valores, 0 y 1 (en el caso de los campos de dos bits, seran cuatro los valores posibles: 0, 1,
2 y 3).
Ejemplo: Acceso a los elementos de una estructura
struct s_bits pixel;

if (pixel.mostrar == 1)
{
pixel.transparencia = 0;
}
Limitaciones de los campos de bits
Las variables de campos de bits tienen ciertas restricciones:
No se puede aplicar el operador & sobre una de estas variables para averiguar su
direccin de memoria.

2-TIPO DE DATOS UNION

You might also like