Имя_структурной_переменнной.имя_поля
Способ – при объявлении (описании) шаблона.
Способ – по шаблону.
На основе шаблона структуры создается структурная переменная (экземпляр структуры), под которую выделяется память и с которой можно работать в программе.
Под объявление шаблона компилятор память не выделяет.
Цели изучения темы
Пример
Наиболее полезное применение массивов указателей – это массив указателей на строки.
Пример
Указатель можно инкрементировать и декрементировать. При этом происходит смещение на один элемент массива независимо от типа элемента.
Допустим 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.