русс | укр

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

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

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

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


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

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


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


Пространство имен позволяет именовать группу переменных и методов.

Создание пространства имен указывается ключевым словом namespace.

Пример:

namespace S // Пространство имен S{ int i; }void main(){ S::i++; // Обращение к переменной // i из пространства имен S}

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

Например:

namespace Outer { int iOuter1= 111; int func(int j); namespace Inner { int iInner1 = 222; }}

Для традиционных приложений можно использовать стандартную библиотеку C++, которая определяет дополнительный набор типов. Пространство имен стандартной библиотеки обозначается идентификатором std.

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

· имя соответствующей переменной или метода должно быть квалифицировано названием пространства имен (пространство имен указывается перед именем через два символа двоеточия). Например:

std::string s="Это строка";

· имя библиотеки должно быть установлено как доступное оператором using. Например:

· using namespace std; // ... · string s1="Строка s1";

Оператор using можно указывать как до метода main, так и внутри метода main (в этом случае переменные и методы пространства имен будут доступны без квалификации их имени сразу после выполнения оператора using).

Для управляемых расширений используются библиотеки среды NET Framework, реализованные как пространства имен. Пространство имен System предоставляет большой набор типов, реализованных как классы или структуры.

 


 

Лекция #8: Производные типы данных языка С++. Структуры, объединения и перечисления Рассматривается синтаксис и семантика объявления структуры, выделение памяти под структуру, доступ к элементам структуры, передача структур в качестве параметров. Приводится определение объединений и описывается размещение их в памяти. Рассматривается работа с перечислимыми типами.
Структуры Объявление структуры Структуры языка C++ представляют поименованную совокупность компонентов, называемых полями, или элементами структуры. Элементом структуры может быть:
  • переменная любого допустимого типа;
  • битовое поле;
  • функция.
Объявление структуры имеет следующее формальное описание: struct [имя_структуры] { тип_элемента_структуры имя_ элемента1; тип_элемента_структуры имя_ элемента2; ... тип_элемента_структуры имя_ элементаN;} [список_объявляемых_переменных]; Объявление структуры с битовыми полями имеет следующее формальное описание: struct [имя_структуры] { тип_элемента_структуры [имя_ элемента1] : число_бит; тип_элемента_структуры [имя_ элемента2] : число_бит; ... тип_элемента_структуры [имя_ элементаN] : число_бит;} [список_объявляемых_переменных]; Возможно неполное объявление структуры, имеющее следующее формальное описание: struct имя_структуры; При отсутствии имени объявляемой структуры создается анонимная структура. При создании анонимной структуры обычно указывается список объявляемых переменных. Список объявляемых переменных типа данной структуры может содержать:
  • имена переменных;
  • имена массивов;
  • указатели.
Например: struct sA {char a[2], int i;} struA, struB[10], *struC; Для использования указателя на структуру ему необходимо присвоить адрес переменной типа структуры. Размер структуры с битовыми полями всегда кратен байту. Битовые поля можно определять для целочисленных переменных типа int, unsigned int, char и unsigned char. Одна структура одновременно может содержать и переменные, и битовые поля. Если для битового поля не задано имя элемента, то доступ к такому полю не разрешен, но количество указанных бит в структуре размещается. Типом элемента структуры может быть:
  • другой структурный тип (допускаются вложенные структуры);
  • указатель на данный структурный тип;
  • неполно объявленный структурный тип;
  • любой другой базовый или производный тип, не ссылающийся рекурсивно на объявляемый структурный тип.
Например: struct sA {char a[2], sA* this_struct;}; // Корректное объявление структуры struct sB; // Неполное объявление структурыstruct sA {char a[2], sB sb*_struct;}; // Корректное объявление структурыstruct sA {char a[2], sA this_struct;}; // Ошибочное объявление Структура не может содержать в качестве вложенной структуры саму себя, но она может содержать элемент, являющийся указателем на объявляемую структуру. Например: struct structA { struct structA *pA; int iA; } sA; // pA указатель на структуру При одновременном объявлении структурного типа, объявлении переменной данного типа и ее инициализации список значений указывается в фигурных скобках в последовательности, соответствующей последовательности определения элементов структуры. Например: struct POINT // Объявление структурного // типа POINT { int x; // Объявление элементов x и y int y;} p_screen = { 50, 100 }; // Эквивалентно записи p_screen.x = 50; // и p_screen.y = 100; Выделение памяти При создании переменной типа структуры:
  • память под все элементы структуры выделяется последовательно для каждого элемента;
  • для битовых полей память выделяется, начиная с младших разрядов;
  • память, выделяемая под битовые поля, кратна байту;
  • общая выделяемая память может быть больше, чем сумма размеров полей структуры.
Рассмотрим пример выделения памяти под структуру struct structA { char cA; char sA[2]; float fA;}; При создании переменной структурного типа: structA s1; будет выделено 7 байтов. Элементы структуры будут размещены в памяти в следующем порядке:
char cA char sA[2] float fA
             

Рассмотрим пример выделения памяти под структуру



struct structB { int i1:2; int i2:3; int :6; unsigned int i3:4;};

При создании переменной структурного типа:

structB s2;

будет выделено 2 байта. Элементы структуры будут размещены в памяти в следующем порядке:


Рис. 8.1.

Для целочисленных значений, предусматривающих наличие знакового разряда (например, int), старший левый бит из общего числа битов, выделяемых под данное битовое поле, интерпретируется как знак. Например, битовое значение 11 для поля i1 будет восприниматься как -1, а значение 11 для поля i3 - как 3.



<== предыдущая лекция | следующая лекция ==>
Указатели на переменные | Доступ к элементам структуры


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


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

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

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


 


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

 
 

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

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