Per què utilitzar l'estructura?
En C, hi ha casos en què hem d'emmagatzemar diversos atributs d'una entitat. No és necessari que una entitat tingui tota la informació d'un sol tipus. Pot tenir diferents atributs de diferents tipus de dades. Per exemple, una entitat Estudiant pot tenir el seu nom (cadena), número de rotlle (int), marques (float). Per emmagatzemar aquest tipus d'informació sobre un estudiant d'entitat, tenim els següents enfocaments:
- Construeix matrius individuals per emmagatzemar noms, números de rotlle i marques.
- Utilitzeu una estructura de dades especial per emmagatzemar la col·lecció de diferents tipus de dades.
Vegem amb detall el primer enfocament.
#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<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'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'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'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'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'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 -> (structure pointer operator)</li> </ol> <p>Let'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'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, 'Sonoo Jaiswal');//copying string into char array //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal </pre> <p>Let'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, 'Sonoo Jaiswal');//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, 'James Bond'); e2.salary=126000; //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); printf( 'employee 1 salary : %f ', e1.salary); //printing second employee information printf( 'employee 2 id : %d ', e2.id); printf( 'employee 2 name : %s ', e2.name); printf( 'employee 2 salary : %f ', 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++)>
El programa anterior pot complir el nostre requisit d'emmagatzemar la informació d'un estudiant de l'entitat. Tanmateix, el programa és molt complex i la complexitat augmenta amb la quantitat de l'entrada. Els elements de cadascuna de les matrius s'emmagatzemen de manera contigua, però és possible que totes les matrius no s'emmagatzemen de manera contigua a la memòria. C us ofereix un enfocament addicional i més senzill on podeu utilitzar una estructura de dades especial, és a dir, una estructura, en la qual podeu agrupar tota la informació de diferents tipus de dades sobre una entitat.
Què és l'Estructura
L'estructura en c és un tipus de dades definit per l'usuari que ens permet emmagatzemar la col·lecció de diferents tipus de dades. Cada element d'una estructura s'anomena membre. Estructures ca; simular l'ús de classes i plantilles, ja que pot emmagatzemar informació diversa
El , estructura La paraula clau s'utilitza per definir l'estructura. Vegem la sintaxi per definir l'estructura en c.
struct structure_name { data_type member1; data_type member2; . . data_type memeberN; };
Vegem l'exemple per definir una estructura per a un empleat de l'entitat a c.
struct employee { int id; char name[20]; float salary; };
La imatge següent mostra l'assignació de memòria de l'empleat de l'estructura que es defineix a l'exemple anterior.
Aquí, estructura és la paraula clau; empleat és el nom de l'estructura; id , nom , i sou són els membres o camps de l'estructura. Entenem-ho amb el diagrama que es mostra a continuació:
Declaració de variable d'estructura
Podem declarar una variable per a l'estructura de manera que puguem accedir fàcilment al membre de l'estructura. Hi ha dues maneres de declarar una variable d'estructura:
- Per paraula clau struct dins de la funció main().
- Declarant una variable en el moment de definir l'estructura.
1a via:
Vegem l'exemple per declarar la variable d'estructura per paraula clau struct. S'ha de declarar dins de la funció principal.
struct employee { int id; char name[50]; float salary; };
Ara escriviu el codi donat dins de la funció main().
struct employee e1, e2;
Les variables e1 i e2 es poden utilitzar per accedir als valors emmagatzemats a l'estructura. Aquí, e1 i e2 es poden tractar de la mateixa manera que els objectes C++ i Java .
2a via:
Vegem una altra manera de declarar variable en el moment de definir l'estructura.
struct employee { int id; char name[50]; float salary; }e1,e2;
Quin enfocament és bo
Si el nombre de variables no està fixat, utilitzeu el primer enfocament. Us proporciona la flexibilitat per declarar la variable d'estructura moltes vegades.
Si no. de variables són fixes, utilitzeu el segon enfocament. Desa el vostre codi per declarar una variable a la funció main().
Accés als membres de l'estructura
Hi ha dues maneres d'accedir als membres de l'estructura:
- Per . (membre o operador de punts)
- Per -> (operador de punter d'estructura)
Vegem el codi per accedir-hi id membre de p1 variable per. operador (membre).
p1.id
C Exemple d'estructura
Vegem un exemple senzill d'estructura en llenguatge 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, 'Sonoo Jaiswal');//copying string into char array //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); return 0; }
Sortida:
el somriure més bonic del món
employee 1 id : 101 employee 1 name : Sonoo Jaiswal
Vegem un altre exemple de l'estructura a llenguatge C per emmagatzemar la informació de molts empleats.
#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, 'Sonoo Jaiswal');//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, 'James Bond'); e2.salary=126000; //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); printf( 'employee 1 salary : %f ', e1.salary); //printing second employee information printf( 'employee 2 id : %d ', e2.id); printf( 'employee 2 name : %s ', e2.name); printf( 'employee 2 salary : %f ', e2.salary); return 0; }
Sortida:
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
3;i++)>