C struct (Структуры)

В этом руководстве вы узнаете о типах структур в программировании на C. Вы научитесь определять и использовать структуры с помощью примеров.

В программировании на C структура (или структура) представляет собой набор переменных (могут быть разных типов) под одним именем.

Как определить структуры?

Прежде чем вы сможете создавать структурные переменные, вам необходимо определить их тип данных. Для определения структуры используется structключевое слово.

Синтаксис структуры

 struct structureName (тип данных член1; тип данных член2;…); 

Вот пример:

 struct Person (имя символа (50); int citNo; float salary;); 

Здесь определяется производный тип struct Person. Теперь вы можете создавать переменные этого типа.

Создать структурные переменные

Когда объявлен тип структуры, ни хранилище, ни память не выделяются. Чтобы выделить память данного типа структуры и работать с ней, нам нужно создать переменные.

Вот как мы создаем структурные переменные:

struct Person (имя символа (50); int citNo; float salary;); int main () (struct Person1, person2, p (20); return 0;)

Другой способ создания структурной переменной:

 struct Person (имя символа (50); int citNo; float salary;) person1, person2, p (20); 

В обоих случаях создаются две переменные person1, person2 и переменная массива p, имеющая 20 элементов типа struct Person.

Доступ к членам структуры

Есть два типа операторов, используемых для доступа к членам структуры.

  1. . - Оператор-член
  2. -> - Оператор указателя структуры (будет рассмотрен в следующем уроке)

Предположим, вы хотите получить доступ к зарплате person2. Вот как это сделать.

 person2.salary

Пример: добавить два расстояния

 // Program to add two distances (feet-inch) #include struct Distance ( int feet; float inch; ) dist1, dist2, sum; int main() ( printf("1st distance"); printf("Enter feet: "); scanf("%d", &dist1.feet); printf("Enter inch: "); scanf("%f", &dist1.inch); printf("2nd distance"); printf("Enter feet: "); scanf("%d", &dist2.feet); printf("Enter inch: "); scanf("%f", &dist2.inch); // adding feet sum.feet = dist1.feet + dist2.feet; // adding inches sum.inch = dist1.inch + dist2.inch; // changing to feet if inch is greater than 12 while (sum.inch>= 12) ( ++sum.feet; sum.inch = sum.inch - 12; ) printf("Sum of distances = %d\'-%.1f "", sum.feet, sum.inch); return 0; )

Вывод

 1-е расстояние Введите футы: 12 Введите дюйм: 7,9 2-е расстояние Введите футы: 2 Введите дюйм: 9,8 Сумма расстояний = 15'-5,7 "

Keyword typedef

Мы используем typedefключевое слово для создания псевдонима для типов данных. Он обычно используется со структурами для упрощения синтаксиса объявления переменных.

Этот код

struct Distance (целое футы; дюйм с плавающей точкой;); int main () (struct Distance d1, d2;)

эквивалентно

typedef struct Distance (целые футы; плавающие дюймы;) расстояния; int main () (расстояния d1, d2;)

Вложенные структуры

Вы можете создавать структуры внутри структуры в программировании на C. Например,

структура сложная (int imag; float real;); номер структуры (комплексная структура; целые числа;) num1, num2;

Предположим, вы хотите установить для переменной img num2 значение 11. Вот как это можно сделать:

 num2.comp.imag = 11; 

Почему структуры в C?

Допустим, вы хотите сохранить информацию о человеке: его имя, номер гражданства и зарплату. Вы можете создать различные переменные name, citNo и salary для хранения этой информации.

Что делать, если вам нужно хранить информацию более чем одного человека? Теперь вам нужно создать разные переменные для каждой информации для каждого человека: name1, citNo1, salary1, name2, citNo2, salary2 и т. Д.

Лучшим подходом было бы собрать всю связанную информацию в рамках единой Personструктуры имени и использовать ее для каждого человека.

Подробнее о структуре

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

Интересные статьи...