Tec.Informatica

Páginas: 21 (5181 palabras) Publicado: 22 de julio de 2012
martes, 2 de febrero de 2010


Estructuras



Una estructura es un conjunto de variables de los mismos o diferentes tipos. Las estructuras son semejantes a los registros (records) de Pascal.

Los elementos integrantes de una estructura se denominan miembros. Pascal llama campos (fields) a los elementos de una estructura, pero C reserva este nombre para referirse a los miembrosparticulares de estructuras que permiten manejo de bits.

La declaraciòn de una estructura se hace como:


struct x {

miembros-y-declaraciones

}


utilizándose como un tipo de dato más en declaraciones de tipo de variables.

"x" es el nombre de la estructura. Las referencias posteriores a la misma estructura pueden omitir las llaves ({}) y la declaración de sus miembros.

Los miembrosy declaraciones incluidos en la estructura son como cualquier declaración de variable de las vistas hasta ahora, con la única diferencia de que no puede especificarse'un tipo de almacenamiento (auto, static, register, extern). Por ejemplo:

struct fecha {

int dias;

int mes;

int año;

};


struct persona {

char nombre[TAMAÑO1];

long cod_postal;

long ss_num;

doublesueldo;

struct date nacim_fecha;

struct date incorp_fecha;

};


serìa equivalente a los records de Pascal:


type

date = record

dia: 1..31;

mes: 1..12;

año: integer;

end;

person = record

nombre: array [1.. TAMAÑO2] of char;

cod_postal: integer;

sueldo: real;

nacim_fecha: date;

incorp_fecha: date;

end;





En este ejemplo definimos una estructura"fecha" conteniendo tres variables enteras: día, mes y año, y definimos una estructura "persona", conteniendo dos arrays de caracteres (nombre y dirección) cod_postal de tipo long, ss_num de tipo long, sueldo de tipo double, y dos miembros consistentes en estructuras "fecha", correspondientes a nacim_fecha e incorp_fecha.

Para acceder a un miembro de una estructura se utiliza el operador ".",como ya anticipábamos al hablar.de las variables en C y sus tipos. Se recurre a él en la forma:

estructura-variable.miembro 4
Por ejemplo, para declarar una variable "d" como una estructura "fecha" e inicializarla a la fecha 1 de junio de 1986, se haría del modo siguiente:
struct fecha d;

d.dia = 1

d.mes = 6;

d.año = 1986;


Como podemos observar en la declaración de laestructura persona las estructuras se pueden encadenar, pudiendo utilizarse como miembros de otras estructuras. Si se define "emp" como una estructura persona:

struct persona emp;

entonces

emp.nacim_fecha.año

se referirá al año de nacimiento del empleado en cuestión.

Una estructura externa o estática se puede inicializar acompañando el nombre de la estructura por una lista deinicializado-res rodeados por llaves ({}).

struct fecha d = {1, 6, 1986};

Declara "d" como una estructura fecha, e inicializa d.día a 1, d.mes a 6 y d.año a 1986.




Operaciones sobre estructuras

En implementaciones antiguas de C las únicas operaciones permitidas sobre las estructuras eran el acceso a sus miembros (mediante un "."), o el acceso a su dirección (mediante un &). ,

Loscompiladores más recientes permiten la asignación de variables estructura, incluyendo el paso de estructuras como parámetros y devolviendo estructuras como valores de funciones.

No está permitido realizar comparaciones de estructuras.

Muchos compiladores que admiten la devolución de estructuras lo hacen de manera no-reentrante, dejando el valor de la estructura devuelta en una variableestática en lugar de en el stack.

Las estructuras automáticas no pueden inicializarse a pesar de que inicializar variables automáticas es equivalente a realizar una asignación. En el S.O. Unix se obtendría el mensaje de error "No auto aggregate inicialitation" como respuesta a este intento.




Punteros a estructuras:

Debido a las restricciones impuestas a las variables de tipo estructura...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Tec.Informatico
  • tec.informatico
  • Tec.Informatica
  • TEC.INFORMATICA
  • tec.informatico

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS