logo

Estructura C

¿Por qué utilizar estructura?

En C, hay casos en los que necesitamos almacenar múltiples atributos de una entidad. No es necesario que una entidad tenga toda la información de un solo tipo. Puede tener diferentes atributos de diferentes tipos de datos. Por ejemplo, una entidad Alumno puede tener su nombre (cadena), número de rollo (int), marcas (flotante). Para almacenar este tipo de información sobre un estudiante de entidad, tenemos los siguientes enfoques:

  • Construya matrices individuales para almacenar nombres, números de lista y marcas.
  • Utilice una estructura de datos especial para almacenar la colección de diferentes tipos de datos.

Veamos el primer enfoque en detalle.

 #include void main () { char names[2][10],dummy; // 2-dimensioanal character array names is used to store the names of the students int roll_numbers[2],i; float marks[2]; for (i=0;i<3;i++) { printf('enter the name, roll number, and marks of student %d',i+1); scanf('%s %d %f',&names[i],&roll_numbers[i],&marks[i]); scanf('%c',&dummy); enter will be stored into dummy character at each iteration } printf('printing details ...
'); for (i="0;i&lt;3;i++)" printf('%s %f
',names[i],roll_numbers[i],marks[i]); < pre> <p> <strong>Output</strong> </p> <pre> Enter the name, roll number, and marks of the student 1Arun 90 91 Enter the name, roll number, and marks of the student 2Varun 91 56 Enter the name, roll number, and marks of the student 3Sham 89 69 Printing the Student details... Arun 90 91.000000 Varun 91 56.000000 Sham 89 69.000000 </pre> <p>The above program may fulfill our requirement of storing the information of an entity student. However, the program is very complex, and the complexity increase with the amount of the input. The elements of each of the array are stored contiguously, but all the arrays may not be stored contiguously in the memory. C provides you with an additional and simpler approach where you can use a special data structure, i.e., structure, in which, you can group all the information of different data type regarding an entity.</p> <h2>What is Structure</h2> <p>Structure in c is a user-defined data type that enables us to store the collection of different data types. Each element of a structure is called a member. Structures ca; simulate the use of classes and templates as it can store various information </p> <p>The <strong>,struct</strong> keyword is used to define the structure. Let&apos;s see the syntax to define the structure in c.</p> <pre> struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; </pre> <p>Let&apos;s see the example to define a structure for an entity employee in c.</p> <pre> struct employee { int id; char name[20]; float salary; }; </pre> <p>The following image shows the memory allocation of the structure employee that is defined in the above example.</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure.webp" alt="c structure memory allocation"> <p>Here, <strong>struct</strong> is the keyword; <strong>employee</strong> is the name of the structure; <strong>id</strong> , <strong>name</strong> , and <strong>salary</strong> are the members or fields of the structure. Let&apos;s understand it by the diagram given below:</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure-2.webp" alt="c structure"> <h2>Declaring structure variable</h2> <p>We can declare a variable for the structure so that we can access the member of the structure easily. There are two ways to declare structure variable:</p> <ol class="points"> <li>By struct keyword within main() function</li> <li>By declaring a variable at the time of defining the structure.</li> </ol> <p> <strong>1st way:</strong> </p> <p>Let&apos;s see the example to declare the structure variable by struct keyword. It should be declared within the main function.</p> <pre> struct employee { int id; char name[50]; float salary; }; </pre> <p>Now write given code inside the main() function.</p> <pre> struct employee e1, e2; </pre> <p>The variables e1 and e2 can be used to access the values stored in the structure. Here, e1 and e2 can be treated in the same way as the objects in <a href="/c-tutorial">C++</a> and <a href="/java-tutorial">Java</a> .</p> <p> <strong>2nd way:</strong> </p> <p>Let&apos;s see another way to declare variable at the time of defining the structure.</p> <pre> struct employee { int id; char name[50]; float salary; }e1,e2; </pre> <h3>Which approach is good</h3> <p>If number of variables are not fixed, use the 1st approach. It provides you the flexibility to declare the structure variable many times.</p> <p>If no. of variables are fixed, use 2nd approach. It saves your code to declare a variable in main() function.</p> <h2>Accessing members of the structure</h2> <p>There are two ways to access structure members:</p> <ol class="points"> <li>By . (member or dot operator)</li> <li>By -&gt; (structure pointer operator)</li> </ol> <p>Let&apos;s see the code to access the <em>id</em> member of <em>p1</em> variable by. (member) operator.</p> <pre> p1.id </pre> <h3>C Structure example</h3> <p>Let&apos;s see a simple example of structure in C language.</p> <pre> #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal </pre> <p>Let&apos;s see another example of the structure in <a href="/c-programming-language-tutorial">C language</a> to store many employees information.</p> <pre> #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, &apos;James Bond&apos;); e2.salary=126000; //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); printf( &apos;employee 1 salary : %f
&apos;, e1.salary); //printing second employee information printf( &apos;employee 2 id : %d
&apos;, e2.id); printf( &apos;employee 2 name : %s
&apos;, e2.name); printf( &apos;employee 2 salary : %f
&apos;, e2.salary); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000 </pre> <hr></3;i++)>

El programa anterior puede cumplir con nuestro requisito de almacenar la información de un estudiante de entidad. Sin embargo, el programa es muy complejo y la complejidad aumenta con la cantidad de entrada. Los elementos de cada una de las matrices se almacenan de forma contigua, pero es posible que no todas las matrices se almacenen de forma contigua en la memoria. C le proporciona un enfoque adicional y más simple en el que puede utilizar una estructura de datos especial, es decir, una estructura en la que puede agrupar toda la información de diferentes tipos de datos con respecto a una entidad.

¿Qué es la estructura?

La estructura en c es un tipo de datos definido por el usuario que nos permite almacenar la colección de diferentes tipos de datos. Cada elemento de una estructura se llama miembro. Estructuras ca; simular el uso de clases y plantillas, ya que puede almacenar diversa información

El , estructura La palabra clave se utiliza para definir la estructura. Veamos la sintaxis para definir la estructura en c.

 struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; 

Veamos el ejemplo para definir una estructura para un empleado de entidad en c.

 struct employee { int id; char name[20]; float salary; }; 

La siguiente imagen muestra la asignación de memoria del empleado de la estructura que se define en el ejemplo anterior.

asignación de memoria de estructura c

Aquí, estructura es la palabra clave; empleado es el nombre de la estructura; identificación , nombre , y salario son los miembros o campos de la estructura. Entendámoslo mediante el diagrama que figura a continuación:

estructura c

Declarar variable de estructura

Podemos declarar una variable para la estructura para que podamos acceder fácilmente al miembro de la estructura. Hay dos formas de declarar una variable de estructura:

  1. Por palabra clave struct dentro de la función main()
  2. Declarando una variable al momento de definir la estructura.

1er camino:

Veamos el ejemplo para declarar la variable de estructura mediante la palabra clave struct. Debe declararse dentro de la función principal.

java punto java
 struct employee { int id; char name[50]; float salary; }; 

Ahora escriba el código dado dentro de la función main().

 struct employee e1, e2; 

Las variables e1 y e2 se pueden utilizar para acceder a los valores almacenados en la estructura. Aquí, e1 y e2 se pueden tratar de la misma manera que los objetos en C++ y Java .

2da forma:

Veamos otra forma de declarar variable a la hora de definir la estructura.

 struct employee { int id; char name[50]; float salary; }e1,e2; 

¿Qué enfoque es bueno?

Si el número de variables no es fijo, utilice el primer método. Le proporciona la flexibilidad de declarar la variable de estructura muchas veces.

Si no. de variables son fijas, utilice el segundo enfoque. Guarda su código para declarar una variable en la función main().

Accediendo a miembros de la estructura.

Hay dos formas de acceder a los miembros de la estructura:

  1. Por . (miembro u operador de punto)
  2. Por -> (operador de puntero de estructura)

Veamos el código para acceder al identificación miembro de p1 variable por. operador (miembro).

 p1.id 

Ejemplo de estructura C

Veamos un ejemplo sencillo de estructura en lenguaje C.

 #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); return 0; } 

Producción:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

Veamos otro ejemplo de la estructura en lenguaje c para almacenar la información de muchos empleados.

 #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, &apos;James Bond&apos;); e2.salary=126000; //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); printf( &apos;employee 1 salary : %f
&apos;, e1.salary); //printing second employee information printf( &apos;employee 2 id : %d
&apos;, e2.id); printf( &apos;employee 2 name : %s
&apos;, e2.name); printf( &apos;employee 2 salary : %f
&apos;, e2.salary); return 0; } 

Producción:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000