Hola y bienvenido de nuevo. Continuemos nuestra discusión sobre estructuras y
hablemos sobre cómo se relacionan con las matrices.
Hablamos sobre cómo las estructuras son similares a las matrices y que puede almacenar más
de un valor, pero son diferentes porque puede tener diferentes tipos de datos y
puede agruparlos de esa manera.
Pero también puede tener matrices de estructuras similares.
Entonces, ha visto lo útil que es la estructura y lo que le permite agrupar lógicamente los
elementos relacionados, lo hemos visto. Sabemos cómo definir una estructura
con diferentes elementos usando la palabra clave struct, usando un nombre
de etiqueta.
Y también sabemos cómo crear una variable de ese tipo.
Porque lo que es esencialmente una estructura es un nuevo tipo de datos que puedes usar.
Y luego puede acceder a los elementos de una estructura utilizando el operador de selección de miembros.
Bueno, ¿qué pasa si desea crear varias estructuras dentro
de una matriz? Usted puede hacer eso.
Entonces, por ejemplo, solo es necesario realizar un seguimiento de una variable en lugar de
tres para cada fecha que utiliza el programa, esa es la ventaja de una estructura.
Si quisiéramos manejar 10 fechas diferentes en un programa, solo
tendríamos que realizar un seguimiento de 10 variables diferentes en lugar de 30.
Porque recuerde, la estructura contiene tres variables dentro de sí misma.
10 para diferentes variables sigue siendo mucho, por lo que realmente
no es la mejor manera de hacerlo. Probablemente desee crear una matriz.
Porque tendrías 10 tipos iguales al igual que tendrías 10
entradas iguales. Solo habría un tipo de estructura.
Entonces, un mejor método para manejar las 10
fechas diferentes implica la combinación de dos poderosas características del lenguaje de programación c,
estructuras y matrices.
Puede usarlos juntos para hacerlo aún más poderoso.
Así que es perfectamente válido definir una matriz de estructuras.
El concepto de una matriz de estructuras es muy poderoso e importante en c, así que preste mucha atención.
Declarar una matriz de estructuras es como declarar cualquier otro tipo de matriz.
Usted especifica el tipo y resulta que es un tipo de estructura.
Entonces, si desea crear una matriz de estructuras que
se denominan fecha, diría estructura fecha
y luego el nombre de la variable y luego usa los
corchetes, al igual que usa los corchetes para otras matrices, debe especificar el tamaño.
Entonces, en este caso, si estamos creando 10 instancias o 10 elementos del tipo de
estructura de fecha, diríamos 10 dentro de esos corchetes para el signo.
Entonces esto definiría una matriz llamada mis fechas, que consta de 10 elementos.
Cada elemento dentro de la matriz se define como una fecha de estructura
de tipo bf, que contiene tres miembros.
Básicamente, lo que está haciendo es almacenar 30 conjuntos
de datos diferentes, 30 elementos de datos diferentes.
Para identificar miembros de una matriz de
estructuras, aplica la misma regla que usa para estructuras individuales.
Archiva el nombre de la estructura con el operador de punto y luego con el nombre del miembro.
Hacer referencia a un elemento de estructura particular dentro de la matriz es bastante natural.
Para establecer la segunda fecha dentro de la matriz mis fechas en el 8 de agosto de 1986, todo
lo que tiene que hacer es especificar el nombre de la matriz,
mis fechas y especificar el índice. Aquí especificamos la segunda fecha.
Recuerde, las matrices se basan en 0. Entonces decimos 1, sub-1.
Y luego, si queremos acceder a elementos de ese elemento
de matriz o miembros de esa estructura para ese elemento, decimos punto mes.
Así que esto nos va a dar el segundo elemento en la matriz de mis fechas.
El valor del mes para ese tipo de estructura, y aquí le asignaremos el valor de 8.
y luego, si queremos acceder al día, también vamos a asignar el
día 8 porque es el 8 de agosto. Y finalmente, para el año, diríamos que el
año punto es igual a 1986.
Así es como puede asignar al segundo elemento de la matriz mis fechas,
las tres variables diferentes porque es de tipo estructura, estructura de fecha.
Debería notar que en realidad no es diferente.
La única diferencia aquí es que tienes un punto. Normalmente, solo diría mis fechas sub-1
y eso sería todo porque solo podría asignar una variable según el
tipo de esa matriz.
Pero en este caso, puede decir sub-1 con tres variables diferentes porque esos
son los tres elementos dentro de la estructura.
Inicializando una matriz de estructuras.
La inicialización de matrices que contienen estructuras es similar a la
inicialización de matrices multidimensionales.
Recuerde, con matrices multidimensionales seguiríamos la sintaxis específica con
llaves en el exterior y luego llaves en el interior que representan cada fila.
Las llaves en el interior eran en realidad opcionales,
pero lo hacían mucho más legible. Y por eso me gusta seguir esa convención.
En este ejemplo, estamos creando una fecha de estructura de tipo my date,
que será de tamaño 5. Y luego vamos a inicializar solo los primeros tres elementos.
Al igual que una matriz multidimensional, tenemos
esas llaves adentro. Y entonces, el primer elemento en la matriz de
mis fechas, que es un índice bajo cero. Vamos a decir que el
mes es el 12, la fecha es el 10 y el año es 1975.
Y luego haremos lo mismo con el primer elemento. Vamos a decir 12 30 1980.
Y para el tercer elemento vamos a decir 11 15 2005.
Y debido a que no proporcionamos los otros dos elementos
en la matriz de mis fechas, esos no se inicializarán nada.
Así que esto establecerá las tres primeras fechas.
En la matriz, mi fecha es 12
10 1975, 12 30 1980 y 11 15 2005.
Los períodos internos de los frenillos son opcionales, al igual que en un área multidimensional, también son opcionales.
Pero nuevamente hace que sea más fácil de leer, más fácil de seguir con esos frenos
internos, yo seguiría esa convención.
Así que podrías hacer esto si
quieres deshacerte de las llaves, pero es un poco más difícil
de seguir porque ahora solo tienes comas, separadas por comas o elementos separados por comas
y puede volverse muy confuso si estás haciendo mucho de aquellos.
Tienes que mapear eso correctamente, digamos que estoy en el cuarto cuarto elemento
para mi cuarta coma, de acuerdo, ese será el segundo elemento
de la matriz, es más difícil de seguir, así que usa los que están dentro de las llaves.
Si desea inicializar solo el tercer elemento de la matriz a un valor especificado,
puede especificar mis fechas por debajo de 5.
Todavía estás creando la matriz aquí.
Todavía está declarando la variable y estableciendo el tamaño en cinco.
Pero dentro de las llaves,
está diciendo dos llaves interiores y
va a inicializar 2 a 12 10 1975.
Entonces verá los corchetes que representan el elemento que desea inicializar, luego el
operador de asignación es igual y luego, dentro de las llaves,
está inicializando el mes, día y año para los elementos
dentro de la estructura.
Por lo tanto, también puede especificar exactamente qué elemento desea inicializar.
Si solo desea establecer el mes y el día del segundo elemento de la matriz de mis fechas en 12
y 30, puede hacer algo muy similar.
Simplemente haga una coma para separar cada atributo.
En realidad, no desea establecer el año, por lo que debe poder usar esas llaves.
Se podría decir que el mes del punto
es igual a 12 sub-1 día del punto es igual a 30.
Y de nuevo, esta sintaxis se parece mucho a la inicialización de
variables de estructura en otro lugar.
La única diferencia aquí es que porque es una matriz, debe especificar el índice de la
matriz, pero una sintaxis similar.
¿Qué pasa con las estructuras que contienen matrices?
Elementos dentro de la estructura que contienen una matriz.
También es posible encontrar estructuras que contengan una matriz como miembro.
Esto puede resultar útil.
Su uso más común es configurar una matriz de caracteres dentro de una estructura.
Usamos matrices de caracteres bastante correctas para cadenas.
Por lo tanto, sería muy común que una estructura contenga una cadena esencialmente, una
matriz de caracteres.
Entonces, suponga que desea definir una estructura llamada
mes que contiene como miembros el número de días del mes
y una abreviatura de tres caracteres para el nombre del mes.
Bueno, ahí es donde podríamos usar una matriz de caracteres. Podríamos decir estructura mes.
Sabemos cómo definir una estructura. Nuevamente, esto no está asignando memoria.
Así es como se define la estructura. Estos son los elementos que se encuentran contenidos en su interior.
Aquí estamos usando la palabra clave struct. Decimos el nombre de la estructura. El nombre de la etiqueta es
mes, y luego tenemos esa llave izquierda y luego especificamos los elementos.
Tenemos un elemento que es un número entero que representa el número de días que tenemos un punto y coma al final.
Y luego tenemos una matriz de caracteres, nombre de
carácter sub-tres, entonces tamaño de tres porque tiene tres caracteres.
Y luego terminamos la estructura con la llave derecha en el punto y coma.
Pero recuerde, los caracteres son matrices y están estrechamente relacionados con los punteros, y eso ya lo sabemos.
Pero puede hacer que las estructuras contengan matrices simplemente poniéndolas
como un elemento miembro.
Y entonces esto configura una estructura de mes que
contiene un miembro entero llamado número de días y un miembro de carácter llamado nombre.
El nombre del miembro es en realidad una matriz de tres caracteres, bastante sencillo.
Entonces, ¿cómo accedes realmente a él? Bueno, primero tendrías que crear tu variable.
La variable crearía memoria para los elementos dentro de la estructura y luego querría establecer
los campos adecuados dentro de la variable de 8 meses, la matriz de
caracteres porque ese era su nombre. Teníamos nombre y número
de días. Aquí se llama nombre y en el ejemplo se llama mes.
Bueno, un mes es el tipo de variable y luego el nombre es el tipo de elemento, así que eso es correcto.
Entonces aquí creamos una estructura. Es de tipo mes.
Es el nombre de la variable es un mes. No lo inicializamos con nada.
Inmediatamente establecemos un número mensual de días de 31.
Usamos ese operador de selección de miembro de punto.
Y luego queremos asignar a la matriz de caracteres, no
podemos asignar directamente a una matriz de caracteres.
Tendrías que hacer una comparación de str o algo así si quisieras firmar todo. Y podrías hacer eso.
No es necesario que utilice estos índices. Podría decir str, copiar una
coma de nombre de punto de mes y luego j
a n entre comillas dobles o podría hacerlo aquí donde accede a los elementos
de la matriz a través del índice.
Aquí estamos diciendo un nombre de punto de mes porque tenemos que acceder al
nombre de la variable miembro o del elemento miembro.
Y luego, dentro de los corchetes, especificamos el índice de la matriz.
Lo encontraremos firmando el primer carácter de la matriz de j, el segundo a, el tercero n.
Vería esta sintaxis si estuviera haciendo ints,
doubles y floats. Normalmente, cuando tiene una matriz
de caracteres, usará la función de copia str agitar y asignará todo con comillas dobles.
También puede inicializar la variable a los mismos valores haciendo
algo muy similar cuando declara la variable. Justo dentro de las llaves,
debido a que es una matriz, puede tener
llaves internas y luego las comillas simples alrededor de cada carácter.
Y puede configurar estructuras de 12 meses dentro de una matriz para representar cada mes del año.
Entonces, ahora podemos crear una
variable de mes, que es una matriz de tamaño 12 de tipo struct mes,
y que puede representar cada mes.
Y luego, para cada mes, podemos pasar el número de días y luego las abreviaturas del mes.
Entonces, utilizar estos dos poderosos conceptos de matrices
y estructuras es muy, muy útil.
Las estructuras pueden tener muchos elementos, por
lo que en realidad pueden ser una estructura de matrices y los
elementos dentro de la estructura pueden ser una matriz.
Y ahora hablaremos sobre cómo podemos usar estructuras para contener otros elementos como punteros.
Pero verá que las estructuras pueden almacenar cualquier tipo de datos
en muchos tipos diferentes de datos.
Y es muy, muy útil usarlo con el concepto de matriz.
Espero que esto haya sido útil. Nuevamente, tendremos el desafío de demostrar
algunos de estos conceptos y traer algunos ejemplos dentro
de bloques de código más adelante. Gracias.