Структуры: определение, инициализация.
С. – сложный тип данных, представляющий собой совокупность разнотипных элементов. Тип стр. – обычно исп. при разработке информационных систем и баз данных. Struct [ имя типа ] { тип 1 элемент_1; тип 2 элемент_2; … тип n элемент_n; }[список_описателей]; Элем-ы стр. наз-ся палями стр. и могут иметь любой тип, кроме типа эт.стр., но может быть ук-лем на него пример: struct student {char fam[30]; int kurs; char group[6]; float ball;} student-имя стр.типа, кот. может быть назначен некот. перем. Описание перем: [struct] student stud1, stud2(перем.структ.типа); Может быть совмещено описание типа стр. и объявление перем-х этого типа пример: [struct] student {char fam[30]; int kurs; char group[6]; float ball;} {stud1,stud2,*pst(ук.на структуру);} Поля стр. могут быть в свою очередь данными типа стр. пример: struct point {float x: float y;}; struct line {struct point p1;struct point p2;}; Инициал.перем.стр.типа struct 1{a,b,c,d}; point z={l;2;3} Перем.стр.типа можно размещать в дин.обл.пам. Для этого надо описать ук.на стр.и выд.под неё место.(пр:student*pst=new student) Доступ к элем. стр. осущ.с пом.опер.выбора (точка) при обращении к полю ч/з имя структ. и-> при обращении ч/з ук. пример: struct student stud1, *ps; ps->stip=150; К каждому элем. стр. перем. Stud 1 можно обратится тремя способами. 1) Stud 1. fam; 2) (* pst). fam; 3) pst -> fam Если элем. стр. явл. др. стр., то доступ к её элем. осущ. ч/з 2 операции выбора. Например: Struct A { int a; double x; } Struct B { Struct A b; double x; } S, x; S.b.a=1; S, b. x= 0.5; S.x=0.125; x. b. a=2; x. b. x=-0.5; x. x.=2.5; Как видно из примера поля разных стр. могут иметь одинак. имена, т.к. у них разная область видимости. По этой же причине одинак. имена могут иметь полиструктуры и имя перем. из списка описателей ( не рекомендуется).
Операции над структурами. 1) Присвоение стр.,если они имеют одинак.тип.При этом происходит поэлементное копирование: пример: a) struct student stud1,stud2,*ps; stud2=stud1; (*ps)=stud1; b) struct point a,b; (a.x=1;a.y=1;)ó(bx=ax;by=ay) b=a; 2) Вв/выв стр., как и мас-ов, выполняется по элементно(пр:cin>>stud.fam>>stud.kurs; cout<<stud.fam<<” “<<stud.kurs<<endl; 3) Получение адр стр-ы(student stud1,*ps; student ps=&stud1;).В отличие от масс. имя стр.не имеет никакого значения. 4)Стр-у можно возвращать в качестве значения ф-ии. Стр-у можно передавать в качестве парам.ф-ии.(пр: struct point make(int x, int y) {struct point temp; temp.x=x; temp.y=y; return temp;} b =make(1.1);) При вызове ф-ии в качестве фактич.аргум.указываются имена стр-ых перем-ых.(пр:struct complex x,y,z;….z=add1(x,y);)
Массивы структур. Объединения. Структуры, как и др. переменные, могут объединяться в массивы. Массив структур – это удобное ср-во представления и обработки табличной информации. Так например: сведения о ста студентах могут хранится в массиве структур: Student stud [100]; Тогда сведения об одном студенте могут обозначатся как: stud [1]. fam;или stud [5]. kurs; Объединения Об. представляют собой все поля кот представл. по одному адресу.(пр: union имя_типа {определения элементов}; Длина об. равна наибольшей из длин его полей. В каждый момент времени переменной типа об. хранится только одно значение. Об. применяются для экономии памяти в тех случаях когда известно, что больше одного поля одновременно не требуется.(пр: union s {int i; char k; long int L;};
Понятие потока. Классификация потоков. Под вв/выв понимается процесс обмена инф. м/у оперативной пам. и внеш. устр-ми. Осн. понятием связанным с инф. на вне шустр явл-ся понятие «файл». Всякая опер вв/выв трактуется как опер обмена с файломи. Поэтому организация вв/выв в языке прогр-это организация работы с файлами. Различают понятия внутр.(логического) и внешнего (физического). Аналогом понятия внутр. файла в Си явл понятие потока. Поток(stream)-это последовательность байтов, передаваемая в процессе вв/выв и независящая от конкретного устр., с кот производится обмен инф. Чтение данных из потока наз-ся помещением или подключением. По направлению обмена потоки можно разделить на входные(данные вводятся в пам.) и данные выводимые из памяти. По виду устр. с кот. работает поток их можно разделить на: -стандартные (для передачи данных от клав) -файловые(для обмена инф. с файлами на внеш носит.) -строковые(для работы с массивами симв в операт пам) Для поддержки потоков библ Си содержит иерархию классов построенную на основе класса ios(include output stream) Этот класс содержит общие для вв и выв поля и методы. Иерархия классов
16. Стандартные потоки. Прямыми потоками класса ios (производными классами) явл-ся класс istream (класс входных потоков) и ostream(класс выходных потоков); потомком этих 2-х классов явл класс iostream вв/выв). Объект cout принадлежит классу ofstream и представляет собой поток вывода связанный с дисплеем.Оп. поместить в поток cout<<a означает, что зн. «а» должно быть выв. из пам.на дисплей. Объект cin принадлежит iostream и явл.потоком связанным с клав. Операции:взять из потока cin>>а означает что значение перем. а должно быть вв с клав в пам.
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (164)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |