logo

C Štruktúra

Prečo používať štruktúru?

V C existujú prípady, keď potrebujeme uložiť viacero atribútov entity. Nie je potrebné, aby subjekt mal všetky informácie len jedného typu. Môže mať rôzne atribúty rôznych typov údajov. Napríklad entita Študent môže mať svoje meno (reťazec), číslo hodu (int), značky (float). Na ukladanie takéhoto typu informácií o študentovi entity máme nasledujúce prístupy:

  • Zostavte jednotlivé polia na ukladanie mien, čísel hodov a značiek.
  • Na uloženie kolekcie rôznych typov údajov použite špeciálnu dátovú štruktúru.

Pozrime sa na prvý prístup podrobne.

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

Vyššie uvedený program môže spĺňať našu požiadavku na uchovávanie informácií študenta entity. Program je však veľmi zložitý a zložitosť sa zvyšuje s množstvom vstupu. Prvky každého poľa sú uložené súvisle, ale všetky polia nemusia byť uložené súvisle v pamäti. C vám poskytuje ďalší a jednoduchší prístup, kde môžete použiť špeciálnu dátovú štruktúru, t. j. štruktúru, v ktorej môžete zoskupiť všetky informácie rôznych dátových typov o entite.

Čo je Štruktúra

Štruktúra v c je užívateľsky definovaný dátový typ, ktorý nám umožňuje ukladať kolekciu rôznych dátových typov. Každý prvok konštrukcie sa nazýva člen. Štruktúry cca; simulovať používanie tried a šablón, pretože môže uchovávať rôzne informácie

typy počítačov

The ,štrukt kľúčové slovo sa používa na definovanie štruktúry. Pozrime sa na syntax na definovanie štruktúry v c.

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

Pozrime sa na príklad na definovanie štruktúry pre zamestnanca entity v c.

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

Nasledujúci obrázok ukazuje alokáciu pamäte zamestnanca štruktúry, ktorý je definovaný vo vyššie uvedenom príklade.

alokácia pamäte štruktúry c

Tu, štrukturovať je kľúčové slovo; zamestnanca je názov štruktúry; id , názov , a plat sú členy alebo polia štruktúry. Pochopme to podľa schémy uvedenej nižšie:

c štruktúra

Vyhlásenie premennej štruktúry

Môžeme deklarovať premennú pre štruktúru, aby sme mali jednoduchý prístup k členovi štruktúry. Existujú dva spôsoby, ako deklarovať premennú štruktúry:

  1. Pomocou kľúčového slova struct v rámci funkcie main().
  2. Deklarovaním premennej v čase definovania štruktúry.

1. spôsob:

Pozrime sa na príklad deklarovania premennej štruktúry kľúčovým slovom struct. Mala by byť deklarovaná v rámci hlavnej funkcie.

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

Teraz napíšte daný kód do funkcie main().

 struct employee e1, e2; 

Premenné e1 a e2 možno použiť na prístup k hodnotám uloženým v štruktúre. Tu možno s e1 a e2 zaobchádzať rovnakým spôsobom ako s predmetmi v C++ a Java .

2. spôsob:

Pozrime sa na ďalší spôsob, ako deklarovať premennú v čase definovania štruktúry.

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

Ktorý prístup je dobrý

Ak počet premenných nie je pevný, použite 1. prístup. Poskytuje vám flexibilitu mnohokrát deklarovať premennú štruktúry.

Ak nie. premenných sú pevné, použite 2. prístup. Uloží váš kód na deklarovanie premennej vo funkcii main().

Prístup k členom štruktúry

Existujú dva spôsoby prístupu k členom štruktúry:

  1. Autor: . (člen alebo bodkový operátor)
  2. By -> (operátor ukazovateľa štruktúry)

Pozrime sa na kód na prístup k id člen p1 variabilný podľa. (člen) prevádzkovateľ.

 p1.id 

C Príklad štruktúry

Pozrime sa na jednoduchý príklad štruktúry v jazyku 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; } 

Výkon:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

Pozrime sa na ďalší príklad štruktúry v jazyk C na ukladanie informácií o mnohých zamestnancoch.

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

Výkon:

 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