Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Определение размера структуры

Вычисление адреса структуры

Присваивание

Доступ к компоненту структуры по адресу структуры

Доступ к компоненту структуры по имени структуры

Компонент структуры может быть любого типа, кроме типа объявляемой структуры.

Пример объявления структурного типа:

struct student //тип студент

{

char fio[24]; //ФИО

int year; //год зачисления

float ball; //средний балл

};

Объявление переменных типа student:

student s1, s2; //две структурных переменных

student s3[4]; //массив структур

student s4 ={“Petrov”, 2003, 3.3}; //инициализация структуры

struct student s5; //объявление в стиле языка Си

 

7.2. Операции над структурами

Синтаксис операции:

Имя_структуры.имя_компонента

Пример:

student s1;

s1.ball=5; s1.year=2011; strcpy(s1.fio,”Ivanov I.I.”);

Синтаксис операции:

Имя_структуры->имя_компонента

Пример:

student *p;

p=new student;

p->ball=5;

p->year=2011;

strcpy(p->fio,”Ivanov I.I.”);

Синтаксис операции:

s1=s2

где s1 и s2 структуры одного типа.

Пример:

student s1, x;

s1.ball=5; s1.year=2011; strcpy(s1.fio,”Ivanov I.I.”);

x=s1; //присваивание структуры

Пример:

student s1;

student *p;

p=&s1; //вычисление адреса переменной-структуры

Пример:

student s1;

cout<<sizeof s1; //определение размера структуры

Так как типом компонента структуры может быть структура, то можно работать с вложенными структурами.

Пример объявления структуры Работник=(ФИО, дата рождения, должность, дата начала работы), содержащей вложенную структуру Дата:

struct tdate //тип дата

{

int day; //день

int month; //месяц

int year; //год

};

struct person //тип работник

{

char fio[24]; //ФИО

char post[20]; //должность

tdate birthday; //дата рождения

date begin; //дата начала работы

};

Объявление переменной:

person p;

Обращение к полям вложенной структуры:

cin>>p. birthday.day>> p. birthday.month>> p. birthday.year;

Пример программы, которая вводит информацию об n студентах (ФИО, год поступления, средний балл) и выводит эту информацию в упорядоченном по убыванию среднего балла виде:

#include <iostream.h>

#include <conio.h>

#include <string.h>

struct student

{

char fio[24];

int year;

float ball;

};

void main()

{

student* s; //динамический массив

int n; //количество студентов

int i, j; //номер студента и номер прохода массива

student x; //переменная для перестановки

cout<<"n ";

cin>>n;

s=new student [n]; / выделение памяти для динамического массива

for (i=0; i<n; i++) //ввод информации о студентах

{

cout<<"fio ";

/* ФИО содержит пробелы. Для удаления символа '\n’ из буфера ввода после ввода значения n используется функция get() */

cin.get();

cin.getline(s[i].fio,24);

cout<<"year ";

cin>>s[i].year;

cout<<"ball ";

cin>>s[i].ball;

}

// Сортировка

for (j=1; j<n; j++)

for (i=0; i<n-j; i++)

if (s[i].ball<s[i+1].ball)

{ x=s[i]; s[i]=s[i+1]; s[i+1]=x;}

cout<<"result"<<endl;

for (i=0; i<n; i++)

cout <<s[I].fio<<' '<<s[I].year<<' '<< s[I].ball<<endl;

getch();

}

 

7.3. Объявление объединения

 

Объединение – это составной тип данных, компоненты которых могут быть разных типов. Компоненты объединения размещаются с одного адреса памяти.

Синтаксис объявления типа «объединение»:

union имя_типа

{

объявление компонент

};

<== предыдущая лекция | следующая лекция ==>
Операция delete | Характеристики текстовых и двоичных файлов
Поделиться с друзьями:


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


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



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




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