АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Имена типов

Читайте также:
  1. II. Оценка соответствия наименования СИЗ и нормы их выдачи наименованиям СИЗ и нормам их выдачи, предусмотренным типовыми нормами
  2. Анализ циклограммы типового пневмопривода
  3. АРТЕРИИ ЭЛАСТИЧЕСКОГО ТИПА ОТЛИЧАЮТСЯ ОТ ДРУГИХ ТИПОВ _________________ (1)
  4. Атипова пневмонія (5АК8)
  5. Б) Ознакомление с прекрасными именами и возвышенными качествами Аллаха.
  6. В выражении можно смешивать без явного приведения типов только совместимые данные.
  7. В составе эпителия - клетки нескольких типов.
  8. Вирионы бывают 3-х типов симметрии: 1)Кубический(форма икосаэдра-20ти гранник:23 плоскости,12 вершин,30 ребер; предст-аденовир)
  9. Вирусы типов В и С стабильны.
  10. Вопрос №11. Типология логотипов.
  11. Г) перечень типовых управленческих документов, образующихся в деятельности организации, с указанием сроков их хранения
  12. Глава 4. Характеристика типов излучений.

Имя типа специфицирует особенности типа данных. Имена типов используются в трех контекстах: в списках типов аргументов, при об"явлении функций, в вычислениях cast (преобразованиях типов), и в sizeof операциях. Списки типов аргументов рассматривались в

разделе 4.5. "Об"явления функций". Преобразования cast и операция sizeof обсуждаются в разделах 5.7.2. и 5.3.4. соответственно.

Именами для основных, перечисляющих, структурных и совмещающих типов являются спецификаторы типа для каждого из них. Имена для типов указателя, массива и функции задаются следующей синтакси­ческой формой:

<type-specifier><abstract-declarator>

Абстрактный декларатор <abstract-declarator>- это деклара­тор без идентификатора, состоящий из одного или более модификато­ров указателей, массивов и функций. Модификатор указателя (*) всегда появляется перед идентификатором в деклараторе, в то время как модификатор массива ([]) или функции (()) появляются после идентификатора. Таким образом, чтобы правильно интерпретировать абстрактный декларатор, нужно начинать интерпретацию с подразуме­ваемого идентификатора.

Абстрактные деклираторы могут быть составными. Скобки в составном абстрактном деклараторе специфицируют порядок интерпре­тации, подобно тому как это делается при интерпретации составных деклараторов об"явлений. Абстрактный декларатор, состоящий из пустых круглых скобок () не допускается, поскольку это двусмыс­ленно. В этом случае невозможно определить находится ли подразу-

меваемый идентификатор внутри скобок, и в таком случае- это немо­дифицированный тип, или перед скобками, тогда- это тип функции. Спецификаторы типа, установленные посредством об"явлений typedef, также рассматриваются как имена типов.

Примеры:

long * /* Example 1 */

int (*) [5] /* Example 2 */

int (*) (void) /* Example 3 */

В первом примере задано имя типа как указатель на тип long. Во втором и третьем примерах показано каким образом скобки

модифицируют составные абстрактные деклараторы. В примере 2 зада­но имя типа для указателя на массив иэ пяти злементов. В третьем примере именуется указатель на функцию, не требующую аргументов и возвращающую значение типа int.

КОНТРОЛЬНЫЕ ВОПРОСЫ:

 

1. Какие ошибки содержат следующие операторы?

 

enum State { on, off };

enum YesNo { yes, no};

enum DiskDriveStatus { on, off };

 

2. Верно или нет, что объявление следующего перечислимого типа неправильно?

 

enum YesNo { no = 0, No = 0, yes = 1, Yes = 1 };

 

3. Что не так в следующей программе?

 

#include <iostream.h>

int main()

{

int *p = new int;

cout << "Enter а number";

cin >> *p;

cout << "The square of " << *p << " = " << (*p * *p);

return 0;

}

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)