logo

C struktur

Hvorfor bruge struktur?

I C er der tilfælde, hvor vi skal gemme flere attributter for en enhed. Det er ikke nødvendigt, at en enhed kun har alle oplysninger af én type. Det kan have forskellige attributter af forskellige datatyper. For eksempel en enhed Studerende kan have sit navn (streng), rullenummer (int), mærker (float). For at gemme en sådan type information om en enhedsstuderende har vi følgende tilgange:

  • Konstruer individuelle arrays til lagring af navne, rullenumre og mærker.
  • Brug en speciel datastruktur til at gemme indsamlingen af ​​forskellige datatyper.

Lad os se nærmere på den første tilgang.

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

Ovenstående program kan opfylde vores krav om at opbevare oplysningerne om en enhedsstuderende. Programmet er dog meget komplekst, og kompleksiteten stiger med mængden af ​​input. Elementerne i hver af arrayet er lagret sammenhængende, men alle arrays er muligvis ikke gemt sammenhængende i hukommelsen. C giver dig en ekstra og enklere tilgang, hvor du kan bruge en speciel datastruktur, dvs. struktur, hvori du kan gruppere alle informationer af forskellige datatyper vedrørende en enhed.

relationssammensætning

Hvad er struktur

Struktur i c er en brugerdefineret datatype, der gør det muligt for os at gemme indsamlingen af ​​forskellige datatyper. Hvert element i en struktur kaldes et medlem. Strukturer ca; simulere brugen af ​​klasser og skabeloner, da det kan gemme forskellige oplysninger

Det , struct nøgleord bruges til at definere strukturen. Lad os se syntaksen for at definere strukturen i c.

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

Lad os se eksemplet for at definere en struktur for en enhedsmedarbejder i c.

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

Følgende billede viser hukommelsestildelingen for strukturmedarbejderen, der er defineret i ovenstående eksempel.

c struktur hukommelse allokering

Her, struktur er nøgleordet; medarbejder er navnet på strukturen; id , navn , og løn er strukturens medlemmer eller felter. Lad os forstå det ved hjælp af diagrammet nedenfor:

gøre script eksekverbart
c struktur

Erklærer strukturvariabel

Vi kan erklære en variabel for strukturen, så vi nemt kan få adgang til medlemmet af strukturen. Der er to måder at erklære en strukturvariabel på:

  1. Ved struct nøgleord i main() funktion
  2. Ved at erklære en variabel på tidspunktet for definition af strukturen.

1. vej:

Lad os se eksemplet for at erklære strukturvariablen efter struct nøgleord. Det skal deklareres inden for hovedfunktionen.

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

Skriv nu givet kode inde i main()-funktionen.

 struct employee e1, e2; 

Variablerne e1 og e2 kan bruges til at få adgang til de værdier, der er gemt i strukturen. Her kan e1 og e2 behandles på samme måde som genstandene i C++ og Java .

2. vej:

Lad os se en anden måde at erklære variabel på, når strukturen defineres.

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

Hvilken tilgang er god

Hvis antallet af variable ikke er fast, skal du bruge den 1. tilgang. Det giver dig fleksibiliteten til at erklære strukturvariablen mange gange.

simpelt java-program

Hvis nej. af variable er faste, brug 2. tilgang. Det gemmer din kode for at erklære en variabel i main()-funktionen.

Adgang til medlemmer af strukturen

Der er to måder at få adgang til strukturmedlemmer på:

  1. Ved . (medlem eller prikoperator)
  2. Af -> (strukturmarkøroperator)

Lad os se koden for at få adgang til id medlem af p1 variabel med. (medlem) operatør.

 p1.id 

C Struktureksempel

Lad os se et simpelt eksempel på struktur i C-sprog.

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

Produktion:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

Lad os se et andet eksempel på strukturen i C sprog at gemme mange medarbejderes oplysninger.

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

Produktion:

 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