logo

C Struktur

Varför använda struktur?

I C finns det fall där vi behöver lagra flera attribut för en enhet. Det är inte nödvändigt att en enhet endast har all information av en typ. Det kan ha olika attribut av olika datatyper. Till exempel en enhet Studerande kan ha sitt namn (sträng), rullnummer (int), märken (float). För att lagra sådan typ av information om en enhetsstudent har vi följande tillvägagångssätt:

  • Konstruera individuella arrayer för att lagra namn, rullnummer och märken.
  • Använd en speciell datastruktur för att lagra insamlingen av olika datatyper.

Låt oss titta på det första tillvägagångssättet i detalj.

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

Ovanstående program kan uppfylla vårt krav på att lagra information om en enhetsstudent. Programmet är dock mycket komplext och komplexiteten ökar med mängden input. Elementen i var och en av arrayerna lagras angränsande, men alla arrayer kanske inte lagras angränsande i minnet. C ger dig ett ytterligare och enklare tillvägagångssätt där du kan använda en speciell datastruktur, det vill säga struktur, där du kan gruppera all information av olika datatyper om en enhet.

Vad är struktur

Struktur i c är en användardefinierad datatyp som gör att vi kan lagra insamlingen av olika datatyper. Varje element i en struktur kallas en medlem. Strukturer ca; simulera användningen av klasser och mallar eftersom det kan lagra olika information

De ,struct nyckelord används för att definiera strukturen. Låt oss se syntaxen för att definiera strukturen i c.

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

Låt oss se exemplet för att definiera en struktur för en enhetsanställd i c.

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

Följande bild visar minnesallokeringen för strukturanställda som definieras i exemplet ovan.

c strukturera minnesallokering

Här, struktur är nyckelordet; anställd är namnet på strukturen; id , namn , och lön är strukturens medlemmar eller fält. Låt oss förstå det med diagrammet nedan:

c struktur

Deklarerande strukturvariabel

Vi kan deklarera en variabel för strukturen så att vi enkelt kan komma åt medlemmen av strukturen. Det finns två sätt att deklarera strukturvariabel:

cout
  1. Genom struct nyckelord inom main() funktion
  2. Genom att deklarera en variabel vid tidpunkten för att definiera strukturen.

1:a vägen:

Låt oss se exemplet för att deklarera strukturvariabeln med struct nyckelord. Det ska deklareras inom huvudfunktionen.

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

Skriv nu given kod inuti main()-funktionen.

 struct employee e1, e2; 

Variablerna e1 och e2 kan användas för att komma åt de värden som är lagrade i strukturen. Här kan e1 och e2 behandlas på samma sätt som objekten i C++ och Java .

2:a vägen:

Låt oss se ett annat sätt att deklarera variabel vid tidpunkten för att definiera strukturen.

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

Vilket tillvägagångssätt är bra

Om antalet variabler inte är fasta, använd den första metoden. Det ger dig flexibiliteten att deklarera strukturvariabeln många gånger.

Om inte. av variabler är fasta, använd den andra metoden. Den sparar din kod för att deklarera en variabel i main()-funktionen.

Tillgång till medlemmar i strukturen

Det finns två sätt att komma åt strukturmedlemmar:

  1. Förbi . (medlem eller punktoperator)
  2. By -> (strukturpekaroperator)

Låt oss se koden för att komma åt id medlem i p1 variabel med. (medlems)operatör.

 p1.id 

C Strukturexempel

Låt oss se ett enkelt exempel på struktur i C-språk.

 #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 

Låt oss se ett annat exempel på strukturen i C språk att lagra många anställdas information.

mysql ändra kolumntyp
 #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