Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

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

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

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

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

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

Пример

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

Пример

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

Допустим 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.

<== предыдущая лекция | следующая лекция ==>
В С++ указатели могут быть на любой тип данных | Замечание. Имя массива символов (s) является как именем массива, так и адресом его нулевого элемента(как для любого массива в С++)
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 226; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.