Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación I.
Struct en lenguaje C.
Profesora: Alumna:
Thays Parra. Emilmar Cuarez.
C.I: 28619685
Introducción ............................................................................................................. 3
Typedef ................................................................................................................... 9
Conclusión............................................................................................................. 17
Anexos .................................................................................................................. 18
Bibliografía ............................................................................................................ 19
Introducción
3
¿Qué son las estructuras?
Las estructuras son colecciones de variables relacionadas bajo un nombre. Las
estructuras pueden contener variables de muchos tipos diferentes de datos a
diferencia de los arreglos que contienen únicamente elementos de un mismo tipo
de datos.
Las estructuras son tipos de datos derivados que están construidas utilizando
objetos de otros tipos. Considere la siguiente definición de estructura:
struct ejemplo {
char c;
int i;};
struct ejemplo {
4
char c;
Declaraciones de estructura.
Una "declaración de estructura" designa un tipo y especifica una secuencia de
valores variables (denominados “miembros” o “campos” de la estructura) que
pueden tener diferentes tipos. Un identificador opcional, denominado “etiqueta”,
proporciona el nombre del tipo de estructura y se puede usar en referencias
posteriores al tipo de estructura. Una variable de este tipo de estructura contiene la
secuencia completa definida por el tipo. Las estructuras de C son similares a los
tipos denominados "registros" en otros lenguajes.
struct [<identificador>] {
} [<objeto_estructura> [, <objeto_estructura>,];
En el interior de una estructura, entre las llaves, se pueden definir todos los
elementos que consideremos necesarios, del mismo modo que se declaran los
objetos.
5
Las estructuras pueden referenciarse completas, usando su nombre, como
hacemos con los objetos que ya conocemos, y también se puede acceder a los
elementos definidos en el interior de la estructura, usando el operador de selección
(.), un punto. Una vez definida una estructura, es decir, si hemos especificado un
nombre para ella, se puede usar igual que cualquier otro tipo de C. Esto significa
que se pueden declarar más objetos del tipo de estructura en cualquier parte del
programa. Para ello usaremos la forma normal de declaración de objetos, es decir:
[, <objeto_estructura>...];
Tipo miembro_n;
};
Inicializar estructuras.
Las estructuras pueden ser inicializadas mediante listas de inicialización como con
los arreglos. Para inicializar una estructura escriba en la declaración de la variable
a continuación del nombre de la variable un signo igual con los inicializadores entre
llaves y separados por coma, por ejemplo: ejemplo e1 = {’a’, 10};
6
Una estructura se puede inicializar de dos formas:
Struct estructura_amigo {
char nombre [30];
char apellido [40];
char teléfono [10];
int edad;
};
Los arreglos de estructura como todos los demás arreglos son automáticamente
pasados en llamadas por referencia.
Estructuras anidadas.
La conveniencia de coger nombres de funciones y datos fuera del espacio de
nombre global es aplicable a las estructuras. Puede anidar una estructura dentro de
otra estructura, y por tanto guardar juntos elementos asociados.
En ocasiones veremos que habrá cierta similitud entre muchas cosas, por ejemplo,
si quisiéramos hacer una estructura para registrar los datos de un cliente por cada
compra en un súper mercado, es normal pensar que vamos a necesitar un programa
que lea su nombre, apellido, edad, número de identificación y número de teléfono,
8
ahora, piensen en que si queremos hacer una estructura para almacenar lo datos
de una persona que se quiera inscribir en un centro educativo, pediríamos lo mismo.
Las estructuras anidadas tienen más sentido si tomamos como ejemplo, que, para
inscribir a una persona en ese centro educativo, además de pedir los datos que
necesitaríamos para cualquier compra en el súper mercado, también necesitamos
la fecha de nacimiento de la persona. Con esto, es necesario ingresar otro miembro
a la estructura.
Una estructura puede contener como miembro, un puntero para que apunte a una
estructura
Struct alumno
int edad;
int anio;
float promedio;
};
Typedef.
La palabra reservada typedef proporciona un mecanismo para la creación de
sinónimos (o alias) para tipos de datos anteriormente definidos. Por ejemplo:
9
Typedef struct ejemplo;
Define Ejemplo como un sinónimo de ejemplo. Una forma alternativa de definir una
estructura es:
typedef struct {
char c;
Podemos ahora utilizar Ejemplo para declarar variables del tipo struct, por ejemplo:
Ejemplo a [10];
Typedef se utiliza a menudo para crear seudónimos para los tipos de datos básicos.
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.
struct employee
{
char name [20];
int id;
Long class;
} temp;
10
La estructura llamada employee contiene tres miembros: name, id y class. El
miembro name es una matriz de 20 elementos, e id y class son miembros simples
con int y el tipo Long, respectivamente. El identificador employee es el identificador
de la estructura.
struct alumno
int edad;
int año;
float promedio;
};
Con la instrucción struct alumno declaro un tipo de dato llamado alumno, que
contendrá variables de tipo enteras, de punto flotante y cadenas de caracteres.
typedef struct {
int tipo;
} texto_t;
typedef struct {
texto_t nombre;
texto_t dirección;
} alumno;
11
Veamos un ejemplo completo:
12
Un aspecto muy importante a tener en cuenta, es que no se pueden comparar
estructuras entre sí, lo que sí se puede es comparar un miembro de una con el
mismo miembro de otra, esto es debido que los miembros no se almacenan en
forma consecutiva en memoria, sino que puede haber espacios de memoria vacíos
entre un miembro y otro de una misma estructura. Otro aspecto es que al ser la
estructura un tipo de dato, se puede pasar y recibir como argumento de una función
como si fuera un tipo de datos como los que ya fueron estudiados.
13
14
15
La variable amigo es de tipo estructura_amigo. Para acceder al nombre
de amigo usamos: amigo. nombre (al operador '.' le denominamos selector directo
de miembro) Vamos a ver un ejemplo de aplicación de esta estructura:
#include <stdio.h>
int edad;
};
main ()
16
Conclusión
Las estructuras son conocidas como registros y pueden llegar a tener varios tipos
de datos. Para tener acceso a las estructuras se usa el operador punto, colocando
el nombre de la variable de tipo estructura, seguido de un punto, y seguido del
nombre del miembro de la estructura. Un aspecto muy importante al iniciar un struct,
es que gracias a typedef es posible definir sinónimos a los tipos de datos ya
existentes y con esto, colocar nombres más apropiados y entendibles.
17
Anexos
18
Bibliografía
https://docs.microsoft.com/es-es/cpp/c-language/structure-declarations?view=vs-
2019
https://www.cimat.mx/~pepe/cursos/lenguaje_2010/slides/slide_33.pdf
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap7/cap71.htm
http://programandoenc.over-blog.es/article-struct-o-estructuras-de-registros-en-c-
123607830.html
https://www.fing.edu.uy/tecnoinf/mvd/cursos/prinprog/material/teo/prinprog-
teorico08.pdf
https://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol1/ch03s08s02.html
https://www.aprendeaprogramar.com/cursos/verApartado.php?id=16007
https://es.slideshare.net/carolina00/estructuras-en-c
https://kesquivel.files.wordpress.com/2013/05/estructuras2013final2.pdf
http://www.aprendeaprogramar.com/mod/forum/discuss.php?d=2145
http://sopa.dis.ulpgc.es/so/cpp/intro_c/introc57.htm
https://www.aulafacil.com/cursos/programacion/lenguaje-de-programacion-
c/inicializar-estructuras-l17609
http://c.conclase.net/curso/?cap=011
19