logo

C-structuur

Waarom structuur gebruiken?

In C zijn er gevallen waarin we meerdere attributen van een entiteit moeten opslaan. Het is niet noodzakelijk dat een entiteit over alle informatie van slechts één type beschikt. Het kan verschillende attributen van verschillende gegevenstypen hebben. Een entiteit bijvoorbeeld Student kan zijn naam (string), rolnummer (int), markeringen (float) hebben. Om dit soort informatie over een entiteitstudent op te slaan, hebben we de volgende benaderingen:

  • Construeer individuele arrays voor het opslaan van namen, rolnummers en markeringen.
  • Gebruik een speciale datastructuur om de verzameling van verschillende gegevenstypen op te slaan.

Laten we de eerste benadering in detail bekijken.

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

Het bovenstaande programma kan voldoen aan onze eis om de informatie van een entiteitstudent op te slaan. Het programma is echter erg complex en de complexiteit neemt toe met de hoeveelheid input. De elementen van elk van de arrays worden aaneengesloten opgeslagen, maar het is mogelijk dat niet alle arrays aaneengesloten in het geheugen worden opgeslagen. C biedt u een aanvullende en eenvoudigere aanpak waarbij u een speciale gegevensstructuur kunt gebruiken, dat wil zeggen een structuur waarin u alle informatie van verschillende gegevenstypen met betrekking tot een entiteit kunt groeperen.

Wat is structuur

Structuur in c is een door de gebruiker gedefinieerd gegevenstype waarmee we de verzameling van verschillende gegevenstypen kunnen opslaan. Elk element van een structuur wordt een lid genoemd. Structuren ca; simuleer het gebruik van klassen en sjablonen, omdat het verschillende informatie kan opslaan

De , structureren trefwoord wordt gebruikt om de structuur te definiëren. Laten we de syntaxis bekijken om de structuur in c te definiëren.

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

Laten we het voorbeeld bekijken van het definiëren van een structuur voor een entiteitwerknemer in c.

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

De volgende afbeelding toont de geheugentoewijzing van de structuurmedewerker die in het bovenstaande voorbeeld is gedefinieerd.

c-structuur geheugentoewijzing

Hier, structureren is het sleutelwoord; medewerker is de naam van de structuur; ID kaart , naam , En salaris zijn de leden of velden van de structuur. Laten we het begrijpen aan de hand van het onderstaande diagram:

c-structuur

Structuurvariabele declareren

We kunnen een variabele voor de structuur declareren, zodat we gemakkelijk toegang hebben tot het lid van de structuur. Er zijn twee manieren om structuurvariabelen te declareren:

  1. Op struct-trefwoord binnen de functie main().
  2. Door een variabele te declareren op het moment dat de structuur wordt gedefinieerd.

1e manier:

Laten we het voorbeeld bekijken om de structuurvariabele te declareren met het trefwoord struct. Het moet binnen de hoofdfunctie worden aangegeven.

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

Schrijf nu de gegeven code in de functie main().

 struct employee e1, e2; 

De variabelen e1 en e2 kunnen worden gebruikt om toegang te krijgen tot de waarden die in de structuur zijn opgeslagen. Hier kunnen e1 en e2 op dezelfde manier worden behandeld als de objecten in C++ En Java .

2e manier:

Laten we eens kijken naar een andere manier om variabelen te declareren op het moment dat de structuur wordt gedefinieerd.

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

Welke aanpak is goed

Als het aantal variabelen niet vastligt, gebruik dan de eerste benadering. Het biedt u de flexibiliteit om de structuurvariabele vele malen te declareren.

Als Nee. Als de variabelen vast zijn, gebruik dan de tweede benadering. Het slaat uw code op om een ​​variabele in de functie main() te declareren.

Toegang tot leden van de structuur

Er zijn twee manieren om toegang te krijgen tot structuurleden:

  1. Door . (lid- of puntoperator)
  2. Door -> (operator voor structuuraanwijzer)

Laten we de code bekijken om toegang te krijgen tot de ID kaart lid van p1 variabel door. (lid) exploitant.

 p1.id 

C Structuurvoorbeeld

Laten we een eenvoudig voorbeeld van structuur in C-taal bekijken.

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

Uitgang:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

Laten we nog een voorbeeld van de structuur bekijken C-taal om veel werknemersinformatie op te slaan.

c programma voor tweedimensionale array
 #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; } 

Uitgang:

 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