Структуры в языке C

Структуры в языке C

Объявление структуры

Структуры в языке C позволяют объединить несколько переменных в одном объекте. Например, создадим структуру для хранения информации о человеке:

#include <stdio.h>
            #include <string.h>
            
            // Объявление структуры
            struct Person {
                char name[50];
                int age;
                float height;
                float weight;
            };
            
            int main() {
                struct Person person1;  // создание переменной структуры
            
                // Заполнение полей структуры
                strcpy(person1.name, "Иван");
                person1.age = 16;
                person1.height = 1.75;
                person1.weight = 65.5;
            
                // Вывод данных о человеке
                printf("Имя: %s\n", person1.name);
                printf("Возраст: %d\n", person1.age);
                printf("Рост: %.2f м\n", person1.height);
                printf("Вес: %.2f кг\n", person1.weight);
            
                return 0;
            }

Доступ к полям структуры

Обращение к полям структуры осуществляется через оператор .:

#include <stdio.h>
            
            struct Person {
                char name[50];
                int age;
                float height;
                float weight;
            };
            
            int main() {
                struct Person person1 = {"Анна", 17, 1.68, 54.5};
            
                // Доступ к полям структуры
                printf("Имя: %s\n", person1.name);
                printf("Возраст: %d\n", person1.age);
                printf("Рост: %.2f м\n", person1.height);
                printf("Вес: %.2f кг\n", person1.weight);
            
                return 0;
            }

Передача структуры в функцию

При передаче структуры в функцию она копируется:

#include <stdio.h>
            
            struct Person {
                char name[50];
                int age;
                float height;
                float weight;
            };
            
            // Функция для вывода информации о человеке
            void printPerson(struct Person person) {
                printf("Имя: %s\n", person.name);
                printf("Возраст: %d\n", person.age);
                printf("Рост: %.2f м\n", person.height);
                printf("Вес: %.2f кг\n", person.weight);
            }
            
            int main() {
                struct Person person1 = {"Елена", 18, 1.62, 59.0};
                printPerson(person1);  // передаем структуру в функцию
                return 0;
            }

Передача структуры по ссылке

Чтобы избежать копирования, можно передавать указатель на структуру:

#include <stdio.h>
            
            struct Person {
                char name[50];
                int age;
                float height;
                float weight;
            };
            
            // Функция для увеличения возраста
            void increaseAge(struct Person *person) {
                person->age++;  // увеличиваем возраст
            }
            
            int main() {
                struct Person person1 = {"Дмитрий", 20, 1.80, 72.5};
            
                // Передаем структуру по ссылке
                increaseAge(&person1);
                printf("Возраст после увеличения: %d\n", person1.age);  // выводит 21
            
                return 0;
            }

Заключение

Структуры позволяют организовывать данные, относящиеся к одному объекту. При передаче больших структур в функции лучше использовать указатели, чтобы избежать лишнего копирования.