logo

C Structura

De ce să folosiți structura?

În C, există cazuri în care trebuie să stocăm mai multe atribute ale unei entități. Nu este necesar ca o entitate să aibă toate informațiile de un singur tip. Poate avea atribute diferite de diferite tipuri de date. De exemplu, o entitate Student poate avea numele (șirul), numărul rolului (int), semnele (float). Pentru a stoca un astfel de tip de informații cu privire la un student entitate, avem următoarele abordări:

  • Construiți matrice individuale pentru stocarea numelor, numerelor de role și a mărcilor.
  • Utilizați o structură de date specială pentru a stoca colecția de diferite tipuri de date.

Să ne uităm la prima abordare în detaliu.

 #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++)>

Programul de mai sus poate îndeplini cerința noastră de a stoca informațiile unui student entitate. Cu toate acestea, programul este foarte complex, iar complexitatea crește odată cu cantitatea de intrare. Elementele fiecărei matrice sunt stocate contigu, dar toate matricele pot să nu fie stocate contigu în memorie. C vă oferă o abordare suplimentară și mai simplă în care puteți utiliza o structură specială de date, adică o structură, în care puteți grupa toate informațiile de diferite tipuri de date referitoare la o entitate.

Ce este Structura

Structura în c este un tip de date definit de utilizator care ne permite să stocăm colecția de diferite tipuri de date. Fiecare element al unei structuri se numește membru. Structuri ca; simulează utilizarea de clase și șabloane, deoarece poate stoca diverse informații

The ,struct cuvântul cheie este folosit pentru a defini structura. Să vedem sintaxa pentru a defini structura în c.

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

Să vedem exemplul de definire a unei structuri pentru un angajat al unei entități din c.

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

Următoarea imagine arată alocarea memoriei angajatului structurii care este definită în exemplul de mai sus.

c structura de alocare a memoriei

Aici, struct este cuvântul cheie; angajat este numele structurii; id , Nume , și salariu sunt membrii sau câmpurile structurii. Să-l înțelegem prin diagrama de mai jos:

c structura

Declararea variabilei structurii

Putem declara o variabilă pentru structură, astfel încât să putem accesa cu ușurință membrul structurii. Există două moduri de a declara variabila de structură:

  1. Prin cuvânt cheie struct în cadrul funcției main().
  2. Prin declararea unei variabile la momentul definirii structurii.

prima cale:

Să vedem exemplul de declarare a variabilei de structură prin cuvânt cheie struct. Ar trebui declarat în cadrul funcției principale.

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

Acum scrieți codul dat în cadrul funcției main().

 struct employee e1, e2; 

Variabilele e1 și e2 pot fi folosite pentru a accesa valorile stocate în structură. Aici, e1 și e2 pot fi tratate în același mod ca și obiectele din C++ și Java .

a 2-a cale:

Să vedem un alt mod de a declara variabila în momentul definirii structurii.

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

Care abordare este bună

Dacă numărul de variabile nu este fix, utilizați prima abordare. Vă oferă flexibilitatea de a declara variabila structura de mai multe ori.

Daca nu. de variabile sunt fixe, utilizați a doua abordare. Acesta vă salvează codul pentru a declara o variabilă în funcția main().

Accesarea membrilor structurii

Există două moduri de a accesa membrii structurii:

  1. De . (membru sau operator punct)
  2. Prin -> (operator indicator al structurii)

Să vedem codul pentru a accesa id membru al p1 variabil prin. (membru) operator.

 p1.id 

C Exemplu de structură

Să vedem un exemplu simplu de structură în limbajul C.

string builder java
 #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; } 

Ieșire:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

Să vedem un alt exemplu de structură în limbajul C pentru a stoca multe informații despre angajați.

 #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; } 

Ieșire:

 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