logo

C Структура

Навіщо використовувати структуру?

У C є випадки, коли нам потрібно зберігати кілька атрибутів сутності. Не обов'язково, щоб суб'єкт мав всю інформацію лише одного типу. Він може мати різні атрибути різних типів даних. Наприклад, сутність студент може мати свою назву (рядок), номер рулону (int), позначки (float). Щоб зберігати такий тип інформації щодо студента-сутності, у нас є такі підходи:

  • Створіть окремі масиви для зберігання імен, номерів і знаків.
  • Використовуйте спеціальну структуру даних для зберігання колекції даних різних типів.

Розглянемо перший підхід докладніше.

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

Наведена вище програма може задовольнити наші вимоги щодо зберігання інформації про студента-сутності. Однак програма дуже складна, і складність зростає разом із обсягом вхідних даних. Елементи кожного масиву зберігаються безперервно, але не всі масиви можуть зберігатися в пам’яті безперервно. C надає вам додатковий і простіший підхід, коли ви можете використовувати спеціальну структуру даних, тобто структуру, в якій ви можете групувати всю інформацію різних типів даних щодо сутності.

Що таке структура

Структура в c — це визначений користувачем тип даних, який дозволяє нам зберігати колекцію даних різних типів. Кожен елемент конструкції називається членом. Структури ca; імітувати використання класів і шаблонів, оскільки він може зберігати різну інформацію

The ,структура Ключове слово використовується для визначення структури. Давайте подивимося синтаксис для визначення структури в c.

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

Давайте розглянемо приклад визначення структури для співробітника організації в c.

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

На наступному зображенні показано розподіл пам’яті для структури службовця, визначений у наведеному вище прикладі.

java хвіст
c розподіл пам'яті структури

тут, структура є ключовим словом; працівник – назва структури; id , назва , і зарплата є членами або полями структури. Зрозуміємо це за схемою, наведеною нижче:

c структура

Оголошення структурної змінної

Ми можемо оголосити змінну для структури, щоб мати легкий доступ до члена структури. Є два способи оголосити структурну змінну:

  1. За ключовим словом struct у функції main().
  2. Оголошуючи змінну під час визначення структури.

1-й спосіб:

Давайте розглянемо приклад оголошення структурної змінної за допомогою ключового слова struct. Його слід оголосити в основній функції.

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

Тепер напишіть заданий код у функції main().

 struct employee e1, e2; 

Змінні e1 і e2 можна використовувати для доступу до значень, що зберігаються в структурі. Тут e1 і e2 можна розглядати так само, як і об’єкти в C++ і Java .

2 спосіб:

Давайте розглянемо інший спосіб оголошення змінної під час визначення структури.

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

Який підхід хороший

Якщо кількість змінних не фіксована, використовуйте 1-й підхід. Це забезпечує гнучкість оголошення структурної змінної багато разів.

Якщо ні. змінних є фіксованими, використовуйте 2-й підхід. Він зберігає ваш код для оголошення змінної у функції main().

Доступ до членів структури

Є два способи доступу до елементів структури:

  1. Від . (член або оператор крапки)
  2. By -> (оператор покажчика структури)

Давайте подивимося код для доступу до id член p1 змінна за. (член) оператор.

 p1.id 

C Приклад структури

Давайте розглянемо простий приклад структури на мові 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; } 

Вихід:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

Давайте розглянемо інший приклад структури в мова C зберігати інформацію про багатьох співробітників.

список проти набору в java
 #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; } 

Вихід:

 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