конспект лекций, вопросы к экзамену

Структуры. Создание структуры и особенности ее использование в программе. Доступ к элементам структуры

Для описания набора разнотипных элементов в программировании вводится понятие «структура», в котором главное – вхождение одних элементов в состав других.

Каждому элементу структуры присвоены имена (идентификаторы):
Табельный номер - tn ; Фамилия - Fam ; Имя - im; Должность - dol; Зарплата - zar. Это имена будущих переменных структуры уровня 1. Самой структуре присвоено имя STR.

Это имя будущего типа данных, который будет называться структурным типом. Описание этого типа на языке Си будет иметь вид:

struct STR
 { int tn;

    char Fam[40];
    char im[30];

    char dol[20];

     float zar;

 };

Количество символов в массивах Fam, im, dol выбрано таким, чтобы хватило байтов для самых длинных возможных слов. При таком описании переменная структурного типа с именем Px объявляется следующим образом:

                                                   STR  Px;

Допускается также объявление переменной структурного типа без объявления самого типа структуры. В этом случае объявление переменной Px может иметь следующий вид:

struct
 { int tn;

    char Fam[40];
    char im[30];

    char dol[20];

     float zar;

 } Px;

Сама же таблица1 может быть объявленной в программе как одномерный массив  Tab элементов типа STR:

                                                   STR Tab[4];

А если структурный тип не объявляется, то массив Tab может быть объявлен таким образом:

struct
 { int tn;

    char Fam[40];
    char im[30];

    char dol[20];

     float zar;

 } Tab[4];

Обращение к элементам данных структурного типа производится следующим образом:                                            

      Px.tn – обращение к полю  tn переменной  Px; например, оператор   Px.tn = 26; означает, что полю tn переменной  Px присваивается значение, равное 26;

      Px.Fam - обращение к полю  Fam переменной  Px; например, оператор gets(Px.Fam);
обеспечит ввод с клавиатуры символов в поле Fam переменной  Px;

      Tab[i].tn – обращение к полю tn i – ой структуры из массива  Tab; например, оператор
 Tab[2].tn = 28; присвоит  полю tn второй строки (нумерация строк начинается с нуля) массива структурTab значение 28; оператор gets(Tab[1].Fam); обеспечит ввод с клавиатуры символов в поле Fam первой структуры массива структурTab.

Однако возможны и более сложные (трехуровневые, четырехуровневые и т. п. структуры). В языке Си можно описывать только двухуровневые структуры.

 

Выделим два понятия: тип данных структура и объект типа структура.
Тип данных структура – это такой тип данных, в котором объединяются в единое целое множество поименованных элементов разных типов. В частном случае объединяемые элементы могут быть одного типа.
В общем случае тип данных структура может быть описан в следующем виде:
struct имя_структуры
{
T_1 x1;T_ 2  x2 ;  …. T_n xn;  };

где x, x2, … xn – объекты, входящие в структуру;

       T_1, T_ 2 , … T_n – типы данных этих объектов.

Объект типа структура – это совокупность данных типа структура.

Если структура определяется однократно, т. е. нет необходимости в разных частях программы определять или описывать одинаковые по внутреннему составу структурированные объекты, то можно не вводить структурированный тип, а непосредственно определять структуры (как тип данных) одновременно с определением их компонентного состава. Следующий оператор определяет две структуры с именами X,Y, массив структур с именем E и указатель pt на структуру:

struct
           { char N[10];

              int V;
            }
  X, Y, E[8], *pt;

 В объекты X и Y и в каждый элемент массива E входят в качестве элементов массив
char N[10] и целая переменная V. Имени у соответствующего структурного типа нет.

Доступ к элементам структуры так же прост, как использование символа «точка». Предположим. что у нас есть структурная переменная с именем car и у нее есть элемент с именем speed, к которому, мы сейчас получим доступ:

1

. car.speed;

03.08.2017; 08:00
просмотров: 158