Una matriz es un datos estructurados compatibles con el lenguaje C. Se puede usar una matriz para almacenar elementos de datos del mismo tipo. Si hay una declaración como int marcas [10]; entonces las marcas son una matriz que puede almacenar diez marcas y todas son enteros. A veces se requiere elementos de datos de almacenamiento de diferentes tipos en la misma ubicación de memoria. Por ejemplo, un empleado puede tener una identificación de empleado, nombre, departamento, edad, etc. Son de diferentes tipos de datos. Por lo tanto, es necesario tener un método para almacenar varios elementos de datos como una sola unidad. Las estructuras y los sindicatos en C se utilizan para almacenar elementos de datos de diferentes tipos en la misma ubicación de memoria.Una estructura y una unión son similares, pero se diferencian principalmente debido a la asignación de memoria. La memoria requerida para almacenar una variable de estructura es la suma del tamaño de la memoria de todos los miembros. La memoria requerida para almacenar una variable sindical es la memoria requerida para el elemento más grande de la Unión. Eso es la diferencia clave entre la estructura y la unión en c. Este artículo analiza la diferencia entre estructura y unión en c.
1. Descripción general y diferencia de claves
2. ¿Qué es la estructura en c?
3. ¿Qué es unión en c?
4. Similitudes entre la estructura y la unión en c
5. Comparación de lado a lado - Estructura vs unión en C en forma tabular
6. Resumen
Una estructura es un tipo de datos definido por el usuario en c. Ayuda a combinar elementos de datos de diferentes tipos. Una estructura puede representar registros. Un estudiante puede tener student_id, student_name, etc. En lugar de almacenar cada variable por separado, todos estos elementos de datos diferentes pueden ser compactos en una sola unidad utilizando una estructura. Se define utilizando la palabra clave 'struct'. En una estructura, se puede acceder a todos sus miembros en cualquier momento.El siguiente crea un estudiante de estructura de tipo de datos derivado.
Estudiante de estructura
intstudent_id;
char student_name [20];
;
Para la estructura anterior, las variables se pueden declarar de la siguiente manera.
Estructura Estudiantil Student1, Student2, Student3;
Hay dos métodos para acceder a los miembros de la estructura. Eso es mediante el uso del operador miembro (.) y el operador de puntero de estructura (->). Se puede acceder a los miembros usando estructura_variable_name. nombre de miembro. Si el programador quiere acceder al nombre del estudiante 2, entonces puede escribir la declaración como printf (estudiante2.student_namename);
Consulte el siguiente programa con una estructura.
Figura 01: programa C con estructuras
Según el programa anterior, el estudiante es una estructura. Contiene student_id y student_name. En el programa principal se declaran dos variables del tipo de estructura. Se llaman Student1 y Student2. La identificación del estudiante1 se asigna con el valor 1 utilizando el operador miembro como estudiante1.student_id = 1. El nombre "Ann" es una cadena. Por lo tanto, se copia al miembro de Student_Name usando la función de copia de cadena Strcpy. La identificación y el nombre se asignan a Student2 de manera similar. Finalmente, esos valores se imprimen utilizando el operador miembro.
La cantidad de memoria requerida para almacenar una variable de estructura es la suma del tamaño de la memoria de todos los miembros. El student_id contiene 4 bytes y student_name contiene 20 bytes (un byte cada uno para un personaje). El total de 24 bytes es la suma del tamaño de la memoria requerida por la estructura.
Un sindicato es un tipo de datos definido por el usuario en c. Ayuda a almacenar diferentes tipos de datos en la misma ubicación de memoria. Un libro puede tener propiedades como book_name, precio, etc. En lugar de crear variables para cada uno de ellos, se puede usar un sindicato para compactar todos los diferentes tipos de datos en una unidad utilizando una unión. Se define utilizando la palabra clave 'unión'.El siguiente crea un libro de unión de datos derivado.
Unionbook
nombre de carbón [20];
precio doble;
;
Para el sindicato anterior, las variables se pueden declarar de la siguiente manera.
Union Book Book1, Libro2;
Hay dos métodos para acceder a los miembros de la Unión. Eso es mediante el uso del operador miembro (.) y el operador de puntero de estructura (->). Se puede acceder a los miembros usando union_variable_name. nombre de miembro. Si el programador quiere acceder al nombre del libro1, entonces puede escribir la declaración como printf (libro1.nombre);
Consulte el siguiente programa con un sindicato.
Figura 02: Programa C usando Union
Según el programa anterior, el libro es un sindicato. El libro1 es una variable de unión de tipo. El nombre y el precio son valores asignados. En unión, solo se puede acceder a uno de sus miembros a la vez y todos los demás miembros tendrán valores de basura. El valor de ID no imprime correctamente, pero el valor de precio se imprime correctamente.
Figura 03: Programa C modificado con Union
Según el programa anterior, el libro es un sindicato. El libro1 y el libro2 son variables de tipo sindicato. Primero, se asigna el valor para el nombre de Book1 y se imprime. Entonces se asigna el valor para el nombre de book2 y se imprime. Todos los miembros imprimen correctamente porque un miembro se está utilizando a la vez. La memoria requerida para almacenar un sindicato es la memoria requerida para el elemento más grande de la Unión. En el programa anterior, la variable de nombre es de 20 bytes. Es más grande que el precio. Entonces, la asignación de memoria para el sindicato es de 20 bytes.
Estructura vs unión en c | |
La estructura es un tipo de datos definido por el usuario en lenguaje C que permite combinar datos de diferentes tipos juntos. | Union es un tipo de datos definido por el usuario en lenguaje C que permite combinar datos de diferentes tipos juntos. |
Accesibilidad | |
En una estructura, se puede acceder a todos sus miembros en cualquier momento. | En un sindicato, solo se puede acceder a uno de sus miembros a la vez y todos los demás miembros contendrán valores de basura. |
Asignación de memoria | |
La memoria requerida para almacenar una variable de estructura es la suma del tamaño de la memoria de todos los miembros. | La memoria requerida para almacenar una variable sindical es la memoria requerida para el elemento más grande de la Unión. |
Palabra clave | |
La palabra clave utilizada para definir una estructura es 'estructura'. | La palabra clave utilizada para definir un sindicato es 'unión'. |
Se utiliza una matriz para almacenar los elementos de datos del mismo tipo. A veces es necesario almacenar elementos de datos de diferentes tipos en la misma ubicación de memoria. El lenguaje de programación C proporciona estructura y unión para realizar esta tarea. Ambos son tipos de datos definidos por el usuario. La memoria requerida para almacenar una variable de estructura es la suma del tamaño de la memoria de todos los miembros. La memoria requerida para almacenar una variable sindical es la memoria requerida para el elemento más grande de la Unión. Esta es la diferencia entre estructura y unión en c.
1.Punto, tutoriales. "Estructuras en C.", Tutorials Point, 15 de agosto. 2017. Disponible aquí
2.Punto, tutoriales. "Sindicatos en C." , Tutorials Point, 15 de agosto. 2017. Disponible aquí