Double hourlysalary; // почасовой оклад
} new_employee = { "Peter", "Smith", 25, 6.78 }; При инициализации структуры ее элементы (инициализаторы) должны соответствовать заданному типу и отделяться друг от друга запятыми. Доступ к элементам (компонентам, полям) структуры осуществляется двумя способами: 1) с помощью оператора связывающей точки (оператора точки) «.»при непосредственной работе со структурой; 2) с помощью стрелки «–>»при использовании указателей на структуры. Общий формат доступа к элементам структуры имеет вид имя_переменной_структуры. имя_поля; имя_указателя_на_структуру –> имя_поля; (*имя_указателя_на_структуру). имя_поля; Например, для рассмотренной инициализации можно изменить почасовой оклад с помощью оператора точки и указателя на структуру: new_employee.hourlysalary = 21.0; employeePtr –> hourlysalary = 21.0; Следует обратить внимание на то, что new_employee – это имя всего объекта-структуры, а hourlysalary – имя элемента этой структуры. Аналогично и в случае использования указателя *employeePtr на структуру. При изменении полей структуры следует обратить внимание на случай со строками, например: strcpy(new_employee. name, "Stephen"); При этом должен быть предусмотрен заголовочный файл <string.h>. для функции strcpy(). Когда объявлен массив структур, например stack[120], то это означает, что создано 120 наборов переменных, каждый из которых организован так, как определено в структуре с дескриптором employee. Чтобы получить доступ к определенной структуре stack[120], следует указать имя массива с индексом, который изменяется от 0 до 119. Например, для пятой структуры можно сделать изменения в почасовом окладе: stack[4].hourlysalary = 121.5; Как и в других массивах переменных языка С, в массивах структур индексирование начинается с нуля. Членами структуры могут быть также массивы или структуры. Когда одна структура является членом другой, она называется вложенной [2]. Рассмотрим пример: struct X = { int A[7][8]; float b; char ch; struct employee Emp2; } Y; Инициализация элементов двухмерного массива А может быть такой: Y.A[2][5] = 99; Инициализация вложенной структуры может быть следующей: Y.Emp2.hourlysalary = 12.75; В соответствии со стандартом С89 структуры могут быть вложенными вплоть до 15-го уровня, стандарт С99 допускает уровень вложенности до 63-го включительно [2].
|