Структуры в языке 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;
}
Структуры позволяют организовывать данные, относящиеся к одному объекту. При передаче больших структур в функции лучше использовать указатели, чтобы избежать лишнего копирования.