С структура (структури)

В този урок ще научите за типовете структури в програмирането на C. Ще се научите да дефинирате и използвате структури с помощта на примери.

При програмирането на C структура (или структура) е колекция от променливи (могат да бъдат от различни типове) под едно име.

Как да дефинирам структури?

Преди да можете да създадете структурни променливи, трябва да дефинирате нейния тип данни. За дефиниране на структура structсе използва ключовата дума.

Синтаксис на struct

 struct structureName (dataType member1; dataType member2;…); 

Ето пример:

 struct Person (char име (50); int citNo; плаваща заплата;); 

Тук struct Personе дефиниран производен тип . Сега можете да създавате променливи от този тип.

Създайте структурни променливи

Когато е деклариран тип структура, не се разпределя памет или памет. За да разпределим паметта на даден тип структура и да работим с нея, трябва да създадем променливи.

Ето как създаваме структурни променливи:

struct Person (char име (50); int citNo; плаваща заплата;); int main () (struct Person person1, person2, p (20); return 0;)

Друг начин за създаване на структурна променлива е:

 struct Person (char name (50); int citNo; float pay;) person1, person2, p (20); 

И в двата случая struct Personсе създават две променливи person1, person2 и масивна променлива p с 20 елемента от тип .

Достъп до членове на структура

Има два типа оператори, използвани за достъп до членове на структура.

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

Да предположим, че искате да получите достъп до заплатата на person2. Ето как можете да го направите.

 person2.заплата

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

 // 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 "

Ключова дума typedef

Използваме typedefключовата дума, за да създадем псевдоним за типове данни. Често се използва със структури за опростяване на синтаксиса на деклариране на променливи.

Този код

struct Разстояние (int фута; плаващ инч;); int main () (struct Разстояние d1, d2;)

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

typedef struct Разстояние (int фута; плаващ инч;) разстояния; int main () (разстояния d1, d2;)

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

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

структурен комплекс (int imag; float real;); номер на структурата (структурен комплекс comp; int integers;) num1, num2;

Да предположим, че искате да зададете imag на променлива num2 на 11. Ето как можете да го направите:

 num2.comp.imag = 11; 

Защо структури в C?

Да предположим, че искате да съхранявате информация за дадено лице: неговото / нейното име, граждански номер и заплата. Можете да създадете различни променливи име, citNo и заплата, за да съхранявате тази информация.

Ами ако трябва да съхранявате информация на повече от един човек? Сега трябва да създадете различни променливи за всяка информация на човек: name1, citNo1, pay1, name2, citNo2, pay2 и т.н.

По-добър подход би бил събирането на цялата свързана информация под една и съща Personструктура от имена и използването й за всеки човек.

Повече за struct

  • Структури и указатели
  • Предаване на структури към функция

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