Este material es para uso exclusivo para los alumnos del INET
Estructuras (Structs)
Resumen de struct
Es un tipo de dato definido por el usuario.
int, char, bool, float, etc. son tipos propios del lenguaje.
Si un alumno está caracterizado por la edad, el nombre y la dirección, el struct correspondiente es:
typedef struct alumno {
int edad;
char nombre[100]; //string nombre;
char direccion[100];
} alu1, alu2;
Inicializando alu1 y alu2:
[Link] = 22;
[Link] = “Jose Faggi”;
[Link] = “Guatemala 2313”;
[Link] = [Link];
[Link] = “Maria Giffa”;
[Link] = “Cuareim 2343”;
Arreglos de structs
typedef struct alumno {
int edad;
char nombre[100]; //string nombre;
char direccion[100];
} arreglo[20];
Otra forma de definir un arreglo de alumno:
alumno clase[30];
Ejemplo 1
Pedirle al usuario que ingrese los datos de los 30 alumnos.
Sugerencia: usar un for.
#include <String.h>
int i,x;
string s1, s2;
alumno clase[30];
for (i=0; i < 30; i++){
printf(“Ingrese edad”);
scanf (“%d”, &x);
clase[i].edad=x;
printf(“Ingrese nombre”);
scanf (“%s”, &s1);
clase[i].nombre=s1;
printf(“Ingrese direccion”);
scanf (“%s”, &s2);
clase[i].direccion=s2;
}
Ejemplo 2
Definir la fecha (dia, mes, año) usando un struct
typedef struct fecha{
int dia;
int mes;
int anio;
}
Ejemplo 3
Volver a definir el struct alumno agregando la fecha de nacimiento.
typedef struct fecha{
int dia;
int mes;
int anio;
}
typedef struct alumno {
int edad;
char nombre[100];
char direccion[100];
fecha fecha_nacimiento;
} a;
[Link]=21;
[Link] = “Josesito”;
[Link] = “adsfasdf”;
a.fecha_nacimiento.dia = 23;
a.fecha_nacimiento.mes = 11;
a.fecha_nacimiento.anio = 1998;
Ejemplo 4
Ejemplo completo:
#include <iostream>
#include <String.h>
using nombrespace std;
typedef struct student
{
int ci;
char nombre[30];
int telefono;
}st;
int main(){
st p1, p2, p3;
[Link]= 1;
strcpy([Link],"Juan");
[Link] = 123443;
[Link]= 2;
strcpy([Link],"Maria");
[Link] = 1234567822;
[Link]= 3;
strcpy([Link],"Esther");
[Link] = 1234567844; return 0;
}
Arreglos con tope
Diferencias entre "typedef struct" y "struct"
• Cuando se utiliza "typedef struct", se crea un nuevo tipo de dato definido por el usuario.
• Es una forma de darle un nombre o alias a una estructura.
• Básicamente, se declara y define una estructura y, al mismo tiempo, se crea un nuevo tipo
de dato que se puede utilizar más adelante en el código sin tener que usar la palabra clave
"struct".
typedef struct {
int x;
int y;
} Punto;
Punto punto1;
punto1.x = 10;
punto1.y = 20;
En el ejemplo anterior, se define una estructura anónima y se le da el alias "Punto" utilizando "typedef".
Luego, se puede declarar variables del tipo "Punto" sin tener que utilizar la palabra clave "struct".
• Por otro lado, cuando se utiliza simplemente "struct", se está declarando una estructura sin darle un alias o
nombre de tipo.
• En este caso, hay que utilizar la palabra clave "struct" cada vez que se declare una variable de ese tipo.
Utilidad el uso del typedef
El uso de "typedef" con estructuras en C tiene varias utilidades adicionales:
Simplificar la declaración de variables: Al utilizar "typedef struct", se puede crear un nombre de tipo más corto y
legible para la estructura. Esto facilita la declaración de variables y mejora la legibilidad del código. En lugar de
escribir "struct NombreEstructura variable;", se puede simplemente escribir "NombreEstructura variable;".
Abstraer la implementación: Al definir una estructura utilizando "typedef struct", se puede ocultar los detalles de
implementación de la estructura. Se puede colocar la definición completa de la estructura en un archivo de
encabezado (.h) (que se verá más adelante) y proporcionar solo el alias o nombre de tipo en ese encabezado. Esto
permite que otros archivos de código utilicen el nombre de tipo sin conocer los detalles internos de la estructura,
lo que proporciona una encapsulación y un nivel de abstracción.
Facilitar cambios futuros: Si en algún momento se necesita modificar la implementación interna de la estructura, al
utilizar "typedef struct" solo se tiene que actualizar la definición de la estructura en un solo lugar (el archivo de
encabezado). El resto del código que utiliza el nombre de tipo no se verá afectado, ya que seguirá utilizando el
mismo alias.
En resumen, el uso de "typedef struct" para estructuras en C permite simplificar la declaración de variables,
abstraer la implementación y facilitar cambios futuros en la estructura.
Esto puede mejorar la legibilidad del código y brindar un mayor nivel de encapsulación y flexibilidad en el diseño.
struct Punto {
int x;
int y;
};
struct Punto punto1;
punto1.x = 10;
punto1.y = 20;
En este ejemplo, se declara una estructura llamada "Punto" utilizando la palabra clave "struct".
Para declarar variables de tipo "Punto", se debe utilizar "struct" antes del nombre de la estructura.
• En resumen, "typedef struct" crea un nuevo tipo de dato utilizando una estructura y le da un
alias, lo que permite utilizar ese alias sin la palabra clave "struct".
• Por otro lado, "struct" declara una estructura sin alias y requiere el uso de "struct" antes del
nombre de la estructura al declarar variables de ese tipo.