Имя_структурной_переменнной.имя_поля

Способ – при объявлении (описании) шаблона.

Способ – по шаблону.

На основе шаблона структуры создается структурная переменная (экземпляр структуры), под которую выделяется память и с которой можно работать в программе.

Под объявление шаблона компилятор память не выделяет.

Цели изучения темы

Пример

Наиболее полезное применение массивов указателей – это массив указателей на строки.

Пример

Указатель можно инкрементировать и декрементировать. При этом происходит смещение на один элемент массива независимо от типа элемента.

Допустим uk – адрес нулевого элемента массива, тогда

cout<<*uk; // вывод значения 0-го элемента uk++; cout<<*uk; // вывод значения 1-го элемента, реально смещение на несколько байтовuk+=2cout<<*uk; // вывод значения 3-го элемента

 

 

char names [3] [20]= { {"Иванов"}, {"Петров"}, {"Сидоров "} };

 

Схематично этот массив можно изобразить следующим образом

 

 

Для вывода строки можно использовать команду:

cout<< *names; // выводится «Иванов»

 

 

Тема 1.6(2). Структуры и строки

· изучить способ описания и работы со структурами;

· научится работать со строками.

1.6.1. Структуры

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

 

Структура – это множество, состоящее из нескольких элементов разных типов (аналог записи в ЯП Pascal).

 

Каждый элемент структуры называется полем.

 

При объявлении (описании) структуры указывается стандартное слово struct, затем имя структуры и определяются все элементы структуры (указываются их имена и типы).

Пример объявления структуры(содержащей данные о сотруднике):

struct sotr {char familia [25]; // массив из 25 символовchar adres [30]; // массив из 30 символовlong int telefon;};

 

Так задается шаблон структуры;

гдеимя шаблона –sort;

поля –familia, adres, telefon.

 

 

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

 

Пример (по шаблону sort):

struct sotr с1, с2, с3; здесь создаются три структурные переменные (три экземпляра структуры) – с1, с2, с3. В ЯП С++ слово struct можно опускать (не указывать):sotr с1, с2, с3;

Пример (при объявлении шаблона sort):

struct sotr {char familia [25]; char adres [30]; long int telefon;} c1, c2, c3;

 

здесь также создаются три структурные переменные (три экземпляра структуры) – с1, с2, с3.

 

Доступ к каждому элементу происходит с помощью оператора «точка» и имеет вид:

Примеры:

c1. telefon=321123;cout << с1.telefon;

 

Структуры можно инициализировать двумя способами:

• во время объявления шаблона

• в теле программы.

 

Инициализация структуры во время объявления шаблона:

struct sotr { char familia [25]; char adres [30]; long int telefon; } c1={ //инициализируется структурная переменная с1 "Антонов А.И.", "ул. Седова 25, 10" 321123 }, c2, c3;

 

Инициализация структуры во время работы программы выполняется присваиванием значений полям структуры или вводом значений полей (например, с клавиатуры):

Пример присваивания значений полям структуры:

strcpy (c2 .familia, "Антонов А.И. "); // копирует "Антонов А.И. " в поле c2 .familiastrcpy (c2 .adres, "ул. Седова 25, 10");с2.telefon=321595;

 

Пример ввода значений полей с клавиатуры:

cout<< "Введите фамилию "; gets (c3.familia); cout<< "Введите адрес ";gets (c3.adres);cout<< "Введите телефон ";cin >> (c3.telefon);

 

Функция gets(s) вводит строку символов с клавиатуры и записывает ее в строку s, объявленную как char s[] или char *s.