ESTRUCTURA (STRUCT)
La palabra reservada struct indica se est ́a definiendo una estructura. El identificador ejemplo es el nombre de la estructura. Las variables declaradas dentro de las llaves de la definici ́on de estructura son los miembros de la es- tructura. Los miembros de la misma estructura deben tener nombres u ́nicos mientras que dos estructuras diferentes pueden tener miembros con el mismo nombre. Cada definici ́on de estructura debe terminar con un punto y coma.
La definicion de struct ejemplo contiene un miembro de tipo char y otro de tipo int. Los miembros de una estructura pueden ser variables de los tipos de datos b ́asicos (int, char, float,etc) o agregados como ser arreglos y otras estructuras. Una estructura no puede contener una instancia de si misma.
Declaramos variables del tipo estructura del siguiente modo:
struct ejemplo e1, a[10];
o alternativamente sin usar la palabra struct: ejemplo e1, a[10];
Las declaraciones anteriores declaran variables e1 de tipo ejemplo y a de tipo arreglo de ejemplo de dimensi ́on 10.
Se pueden declarar variables de tipo estructura ejemplo colocando sus nom- bres a continuaci ́on de la llave de cierre de la definici ́on de estructura y el punto y coma, en el caso anterior:
struct ejemplo { char c;
int i;} e1, a[10]
Ejemplos:
Consideremos la informaci ́on de una fecha. Una fecha consiste de: el d ́ıa, el mes, el an ̃o y posiblemente el d ́ıa en el an ̃o y el nombre del mes. Declaramos toda esa informaci ́on en una estructura del siguiente modo:
struct fecha { int dia;
int mes;
int anio;
int dia del anio; char nombre mes[9];
};
Un ejemplo de estructura que incluye otras estructuras es la siguiente estructura persona que incluye la estructura fecha:
struct persona {
char nombre[tamanio nombre]; char direccion[tamanio dir]; long codigo postal;
long seguridad social;
double salario;
fecha cumpleanios;
fecha contrato;
};
Como inicializar estructuras
Las estructuras pueden ser inicializadas mediante listas de inicializacion como con los arreglos. Para inicializar una estructura escriba en la declaracion de la variable a continuacion del nombre de la variable un signo igual con los inicializadores entre llaves y separados por coma por ejemplo:
ejemplo e1 = { ’a’, 10 };
Si en la lista aparecen menos inicializadores que en la estructura los miembros restantes son automaticamente inicializados a 0.
Las variables de estructura tambi ́en pueden ser inicializadas en enunciados de asignacion asignandoles una variable del mismo tipo o asignandole valores a los miembros individuales de la estructura.
Podemos inicializar una variable del tipo fecha como sigue: struct fecha f = {4, 7, 1776, 186, ”Julio”};
Como utilizar estructuras con funciones
Las estructuras pueden ser pasadas a funciones pasando miembros de estruc- tura individuales o pasando toda la estructura.
Cuando se pasan estructuras o miembros individuales de estructura a una funcion se pasan por llamada por valor. Para pasar una estructura en llamada por referencia tenemos que colocar el ’*’ o ’&’. Los arreglos de estructura como todos los dem ́as arreglos son automatica- mente pasados en llamadas por referencia. Si quisieramos pasar un arreglo en llamada por valor, podemos definir una estructura con u ́nico miembro el array. Una funcion puede devolver una estructura como valor.
Como tener acceso a los miembros de estructuras
Para tener acceso a miembros de estructuras utilizamos el operador punto. El operador punto se utiliza colocando el nombre de la variable de tipo estructura seguido de un punto y seguido del nombre del miembro de la estructura. Por ejemplo, para imprimir el miembro c de tipo char de la estructura e1 utilizamos el enunciado:
printf (” %c, e1.c);
Para acceder al miembro i de la estructura e1 escribimos: e1.i
En general, un miembro de una estructura particular es referenciada por una construcci ́on de la forma:
nombre de estructura.miembro
por ejemplo para chequear el nombre de mes podemos utilizar:
if (strcmp(d.nombre mes,“Agosto”)==0) .....
ESTRUCTURA (TYPEDEF)
Definicion
La palabra reservada typedef proporciona un mecanismo para la creacion de sinonimos (o alias) para tipos de datos anteriormente definidos. Por ejemplo:
typedef struct ejemplo Ejemplo;
define Ejemplo como un sin ́onimo de ejemplo. Una forma alternativa de definir una estrutura es:
typedef struct { char c;
int i;} Ejemplo;
Podemos ahora utilizar Ejemplo para declarar variables del tipo struct, por
ejemplo Ejemplo a[10];
typedef se utiliza a menudo para crear seud ́onimos para los tipos de datos basicos. Si tenemos por ejemplo un programa que requiere enteros de 4 bytes podr ́ıa usar el tipo int en un programa y el tipo long en otro. Para garantizar portabilidad podemos utilizar typedef para crear un alias de los enteros de 4 bytes en ambos sistemas.
Ejemplos de typedef con estructuras
typedef struct Persona PERSONA;
PERSONA dato; /* igual que struct Persona dato; */
Un uso típico es la redefinición de tipos estructurados:
typedef struct /* estructura anónima */
{
char nombre[80];
char sexo;
int edad;
} Persona; /* se declara el tipo Persona */
...
Persona p;
...
p.edad = 44;
Comentarios
Publicar un comentario