русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Структуры


Дата добавления: 2013-12-23; просмотров: 772; Нарушение авторских прав


Перечисления

Типы данных, определяемые пользователем

Электронный ресурс

1.Как умные люди делают отличную рекламу [Электронный ре­сурс]. Режим доступа: http://www.adme.ru/articles/2005/07/19/3375.html

2. Котин М. Разрыв на креативной фабрике [Электронный ресурс]. Режим доступа: http://www.advertka.ru/articles/?id=59

3. Метафора (Словарь электронной энциклопедии) [Электронный ресурс]. Режим доступа: http://ra.wikipedia.org

4. Настроение, юмор в рекламе [Электронный ресурс]. Режим доступа: http://media.utmn.ru/library_view_book.php?chapter_num=88&bid=320

Переименование типов

Типу можно задавать имя с помощью ключевого слова typedef.

typedef тип имя_типа [размерность];

Примеры:

typedef unsigned int UNIT;

typedef char Msg[100];

Такое имя можно затем использовать также как и стандартное имя типа:

UNIT a,b,c;//переменные типа unsigned int

Msg str[10];// массив из 10 строк по 100 символов

Любой тип может быть объявлен с использованием ключевого слова typedef, включая типы указателя, функции или массива. Имя с ключевым словом typedef для типов указателя, структуры, объединения может быть объявлено прежде чем эти типы будут определенны, но в пределах видимости объявителя.

Примеры:

typedef double (* MATH)( );//MATH - новое имя типа, представляющее указатель на функцию, возвращающую значения типа double

MATH cos;//cos указатель на функцию, возвращающую значения типа double

Можно провести эквивалентное объявление: double (* cos)( );

typedef char FIO[40];//FIO - массив из сорока символов

FIO person;//Переменная person - массив из сорока символов

Это эквивалентно объявлению: char person[40];

 

Если надо определить несколько именованных констант таким образом, чтобы все они имели разные значения, можно воспользоваться перечисляемым типом.



enum [имя_типа] {список констант};

Константы должны быть целочисленными и могут инициализироваться обычным образом. Если инициализатор отсутствует, то первая константа обнуляется, а остальным присваиваются значение на единицу большее, чем предыдущее.

Пример:

enum Err{ErrRead, ErrWrite, ErrConvert);

Err error;

. . . .

switch(error)

{

case ErrRead:…

case ErrWrite: …

case ErrConvert: …

}

Структура – это объединенное в единое целое множество поименованных элементов данных. Элементы структуры (поля) могут быть различного типа, они все должны иметь различные имена. Форматы определения структурного типа следующие:

1). struct имя_типа

{

тип 1 элемент1;

тип2 элемент2;

. . .

};

Пример:

struct Date//определение структуры

{

int day;

int month;

int year;

};

Date birthday;//переменная типа Date

2). struct

{

тип 1 элемент1;

тип2 элемент2;

. . .

} список идентификаторов;

Пример:

struct

{ int min;

int sec;

int msec;

}time_beg,time_end;

В первом случае описание структур определяет новый тип, имя которого можно использовать наряду со стандартными типами. Во втором случае описание структуры служит определением переменных.

3). Структурный тип можно также задать с помощью ключевого слова typedef.

typedef struct

{ float re;

float im;

}Complex;

Complex a[100];//массив из 100 комплексных чисел.

3.11.2.1. Инициализация структур

Для инициализации структур значения ее полей перечисляют в фигурных скобках.

Примеры:

1. struct Student

{ char name[20];

int kurs;

float rating;

};

Student s={"Иванов",1,3.5};

2. struct

{ char name[20];

char title[30];

float rate;

}employee={"Петров", "директор",10000};

 

3.11.2.2. Присваивание структур

Для переменных одного и того же структурного типа определена операция присваивания. При этом происходит поэлементное копирование.

Student ss=s;

3.11.2.3. Доступ к элементам структур

Доступ к элементам структур обеспечивается с помощью уточненных имен:

имя_структуры.имя_элемента

employee.name //указатель на строку «Петров»;

employee.rate//переменная целого типа со значением 10000

Пример:

#include "stdafx.h"

#include <iostream>

using namespace std;

void main()

{

struct Student

{

char name[30];

char group[10];

float rating;

};

Student mas[5];

//ввод значений массива

for(int i=0;i<5;i++)

{

cout<<"\nEnter name:";cin>>mas[i].name;

cout<<"\nEnter group:";cin>>mas[i].group;

cout<<"\nEnter rating:";cin>>mas[i].rating;

}

cout<<"Raiting <3:";

for(int i=0;i<5;i++)

if(mas[i].rating<3)

cout<<"\n"<<mas[i].name;

}

3.11.2.4. Указатели на структуры

Указатели на структуры определяются также как и указатели на другие типы.

Student*ps;

Можно ввести указатель для типа struct, не имеющего имени (способ 2):

struct

{ char *name;

int age;

} *person;//указатель на структуру

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

Student *ps=&mas[0];

 

Указатель на структуру обеспечивает доступ к ее элементам 2 способами:

1.(*указатель).имя_элемента. Пример: cin>>(*ps).name;

2. указатель->имя_элемента. Пример: cin>>ps->title;

3.11.2.5. Вложенная структура

Полями структурной переменной могут быть среди прочих структурные переменные (вложенные структуры). Шаблон вкладываемой структуры должен быть известен компилятору заранее.

Пример:

struct BOOK

{

char autor[50];

char nazvanie[100];

int year;

float price;

};

struct TOVAR

{ struct BOOK books[1000]; //вложенная структура

char *types[50];

};

struct TOVAR spr;

spr.books[0].autor="Лукьяненко";

3.11.2.6. Массивы структурных переменных

По созданному шаблону можно определить массив структурных переменных. По шаблону BOOK создается массив LIBRARY структурных переменных размером 100.

struct BOOK LIBRARY [100];

Доступ к элементам массива может осуществляться с использованием индекса или через указатель, которым является имя массива.

Если определен указатель на структурную переменную и проинициализирован адресом первого элемента массива, то его можно использовать для доступа к элементам массива.

Пример:

struct BOOK LIBRARY [100];

struct BOOK *pointer;

pointer=& LIBRARY;

*(pointer+i) ->year=2001;

*(pointer+i) ->price=100.5;

 

3.11.2.7. Битовые поля

Битовые поля – это особый вид полей структуры. При описании битового поля указывается его длина в битах (целая положительная константа).

Пример:

struct

{ int a:10;

int b:14

}xx,*pxx;

. . . .

xx.a=1;

pxx=&xx;

pxx->b=8;

Битовые поля могут быть любого целого типа. Они используются для плотной упаковки данных. Например, с их помощью удобно реализовать флажки типа «да» / «нет».

Особенностью битовых полей является то, что нельзя получить их адрес. Размещение битовых полей в памяти зависит от компилятора и аппаратуры.

 



<== предыдущая лекция | следующая лекция ==>
 | Определения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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