Главная » Просмотр файлов » Конспект лекций по С++

Конспект лекций по С++ (1018900), страница 7

Файл №1018900 Конспект лекций по С++ (Сборник литературы - С и С++) 7 страницаКонспект лекций по С++ (1018900) страница 72017-07-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 7)

char c;

float *pf;

struct sample *next;

} x;

/***************** Example 5 ******************/

struct {

unsigned icon : 8;

unsigned color : 4; unsigned underline : 1; unsigned blink : 1;

} screen[25][80];

В первом примере об"является переменная с именем complex типа структура. Эта структура состоит из двух элементов x и y ти­па float. Тип структуры не поименован.

Во втором примере об"является переменная с именем temp типа структура. Структура состоит из трех элементов с именами name, id и class. Элемент с именем name- это массив иэ 20- ти элементов типа char. элементы с именами id и class- это простые переменные типа int и long соответственно. Идентификатор employee является тегом структуры.

В третьем примере об"явлены три переменных типа структура с именами: student, faculty и staff. Каждая из структур состоит из трех элементов одной и той же конструкции. Элементы определены при об"явлении типа структуры с тегом employee в предыдущем примере.

В четвертом примере об"является переменная с именем x типа структура. Первые два элемента структуры представлены переменной c типа char и указателем pf на величину типа float. Третий эле­мент с именем next об"являются как указатель на описываемую структуру sample.

В пятом примере об"является двумерный массив поименованный screen, элементы которого имеют структурный тип. Массив состоит из 2000 элементов и каждый элементэто отдельная структура, состо­ящая из четырех элементов типа bit-fild с именами icon, color, underline и blink.

Об"явление совмещений

Синтаксис: union[<tag>]{<member-declaration-list>}<declarator>[,<declarator>...]; union<tag><declarator>[,<declarator>...];

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

Об"явление совмещения имеет тот же самый синтаксис, как и об"явление структуры, за исключением того, что она начинается с ключевого слова union вместо ключевого слова struct. Для об"явле­ния совмещения и структуры действуют одни и те же правила, за ис­ключением того, что в совмещении не допускаются элементы типа би­товых полей.

Память, которая соответствует переменной типа совмещение, определяется величиной для размещения любого отдельного элемента совмещения.

Когда используется наименьший элемент совмещения, то пере­менная типа совмещения может содержать неиспользованное простран­ство. Все элементы совмещения запоминаются в одном и том же прос­транстве памяти переменной, начиная с одного и того же адреса. Запомненные значения затираются каждый раз, когда присваивается значение очередного элемента совмещения.

Примеры:

/************** Example 1 ********************/

union sign {

int svar;

unsigned uvar;

} number;

/************** Example 2 ********************/

union {

char *a, b;

float f[20];

} jack;

/*************** Example 2 *******************/

union {

struct {

char icon;

unsigned color : 4;

} window1, window2, window3, window4;

} screen[25][80];

В первом примере об"является переменная типа совмещения, поименованная number. Список элементов совмещения состоит из двух

об"явлений переменных: svar типа int и uvar типа unsigned. Это об"явление позволяет запоминать текущее значение number в знако­вом или беззнаковом виде. Тип совмещения поименован идентификато­ром sign.

Во втором примере об"является переменная типа совмещения с именем jack. Список элементов об"явления состоит из трех об"явле­ний: указателя a на величину типа char, переменной b типа char и массива f из 20 элементов типа float. Тип совмещения не поимено­ван.

Память, распределенная для переменной jack, равна памяти, распределенной под массив f, поскольку f самый большой элемент совмещения.

В третьем примере об"является двумерный массив совмещений с именем screen. Массив состоит из 2000 об"ектов. Каждый об"ект­это отдельное совмещение из четырех элементов: window1, window2, window3, window4, где каждый элемент- это структура. В любое за­данное время каждый об"ект совмещения поддерживается одним из че­тырех возможных элементов типа структура. Таким образом, перемен­ная screen- это композиция четырех возможных "windows".

Об"явление массива

Синтаксис: <type-specifier><declarator>[<constant-expression>]; <type-specifier><declarator>[];

Здесь квадратные скобки- это терминальные символы. Об"явле­ние массива определяет тип массива и тип каждого элемента. Оно может определять также число элементов в массиве. Переменная типа массив рассматривается как указатель на элементы массива. Об"яв­ление массива может представляться в двух синтаксических формах, указанных выше. Декларатор<declarator> задает имя переменной. Квадратные скобки, следующие за декларатором, модифицируют декла­ратор на тип массива. Константное выражение

<constant-expression>, заключенное в квадратные скобки, определя­ет число элементов в массиве. Каждый элемент имеет тип, задавае­мый спецификатором типа <type-specifier>, который может специфи­цировать любой тип, исключая void и тип функции.

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

Массив массивов или многомерный массив определяется путем задания списка константных выражений в квадратных скобках, следу­щего за декларатором:

<type-specifier><declarator>[<constant-expression>]

[<constant-expression>]...

Каждое константное выражение- <constant-expression> в квад­ратных скобках определяет число элементов в даннном иэмерении

массива, так что об"явление двумерного массива содержит два конс­тантных выражения, трехмерного- три и т.д. Если многомерный мас­сив об"является внутри функции или если он инициализируется либо об"является как формальный параметр или об"является как ссылка на

массив, явно определенный где- то в программе, то первое констан­тное выражение может быть опущено.

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

Типу массив соответствует память, которая требуется для размещения всех его элементов. Элементы массива с первого до пос­леднего запоминаются в последовательных возрастающих адресах па­мяти. Между элементами массива в памяти разрывы отсутствуют. Эле­менты массива запоминаются друг за другом построчно. Например, массив, содержащий две строки с тремя столбцами каждая,

char A[2][3]

будет запомнен следующим образом. Сначала запоминаются три столбца первой строки, затем элементы трех столбцов второй стро­ки. Смысл этого в том, чтобы последний индекс был более быстрым. Чтобы сослаться на отдельный элемент массива, нужно использовать индексное выражение, которое описано в разделе 5.2.5.

Примеры:

/*************** Example 1 ******************/

int scores[10], game;

/*************** Example 2 ******************/

float matrix[10][15];

/*************** Example 3 ******************/

struct {

float x,y;

} complex[100];

/*************** Example 4 *******************/

char *name[20];

В первом примере об"является переменная типа массив с име­нем scores из 10 элементов типа int. Переменная с именем game об"явлена как простая переменная целого типа.

Во втором примере об"является двумерный массив с именем matrix. Массив состоит из 150-ти элементов типа float.

В третьем примере об"является массив структур. Массив сос­тоит из 100 об"ектов. Каждый об"ект массива представляет собой структуру, состоящую из двух элементов.

В четвертом примере об"явлен массив указателей. Массив сос­тоит из 20-ти элементов, каждый из которых является указателем на величину типа char.

4.4.6. Об"явление указателей

Синтаксис:

<type-specifier> *<declarator>;

Об"явление указателя определяет имя переменной типа указа­тель и тип об"екта, на который указывает эта переменная. Деклара­тор- <declarator> определяет имя переменной с возможной модифика­цией ее типа. Спецификатор типа- <type- specifier> задает тип об"екта, который может быть базового типа, типа структуры или совмещения.

Переменная типа указатель может указывать также на функции, массивы и другие указатели. Более полная информация о типах ука­зателей дана в разделе 4.3.2. "Составные деклараторы".

Если указатель не используется до определения типа структу­ры или совмещения, то он может быть об"явлен ранее этого опреде­ления. Такие об"явления допускаются, поскольку компилятору не требуется знать размера структуры или совмещения, чтобы распреде­лить память под переменную типа указатель. Указатель может быть об"явлен посредством использования тега структуры или совмещения (смотри ниже пример 4).

Переменная, об"явленная как указатель, хранит адрес памяти. Размер памяти, требуемый для адреса, и смысл адреса зависит от данной конфигурации машины. Указатели на различные типы не обяза­тельно имеют одну и ту же длину.

Для некоторых реализаций используются специальные ключевые слова near, far и huge, чтобы модифицировать размер указателя. Об"явления, использующие специальные ключевые слова, были описаны в разделе 4.3.3. Информация о смысле ключевых слов дана в системной документации.

Примеры:

char *message; /* Example 1 */

int *pointers[10]; /* Example 2 */ int (*pointer)[10]; /* Example 3 */ struct list *next, *previous; /* Example 4 */

struct list { /* Example 5 */ char *token;

int count;

struct list *next;

} line;

struct id { /* Example 6 */ unsigned int id_no;

struct name *pname;

} record;

В первом примере об"является переменная- указатель поимено­ванная message. Она указывает на величину типа char.

Во втором примере об"явлен массив указателей, поименованный pointers. Массив состоит из 10 элементов. Каждый элемент- это указатель на переменную типа int.

В третьем примере об"явлена переменная- указатель, поимено­ванная pointer. Она указывает на массив из 10 элементов. Каждый элемент в этом массиве имеет тип int.

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

В пятом примере об"является переменная с именем line, структурного типа, поименованного list. Тип структуры с именем list определяется тремя элементами. Первый элементэто указатель на величину типа char, второй- на величину типа int, а третий­это указатель на следующую структуру типа list.

В шестом примере об"является переменная с именем record, имеющая тип структуры с именем id. Заметим, что третий элемент с именем pname об"явлен как указатель на другой тип структуры с именем name. Это об"явление может появиться перед об"явление структуры с именем name.

Об"явление функций

Синтаксис:

[<type-specifier>]<declarator>([<arg-type-list>])[,<declarator>...];

Об"явление функции определяет имя, тип возврата функции и, возможно, типы и число ее аргументов. Об"явление функции также называется forward- об"явлением. Декларатор функции об"являет имя функции, а спецификатор типа задает тип возврата. Если специфика­тор типа опущен в об"явлении функции, то предполагается, что функция возвращает величину типа int.

Об"явление функции может включать спецификаторы класса па­мяти extern или static.

Список типов аргументов.

Список типов аргументов- <arg-type-list> определяет число и типы аргументов функции. Синтаксис списка аргументов следующий:

<type-name-list>[,...]

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

Если список типов аргументов- <arg-type-list> содержит

только многоточие (...), то число аргументов функции является пе-

ременным или равно нулю.

Характеристики

Тип файла
Документ
Размер
656 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

С и С++ - сборник литературы
C++ Бархатный путь - Марченко А
cpp_001.shtml
cpp_002.shtml
cpp_003.shtml
cpp_004.shtml
cpp_005.shtml
cpp_006.shtml
cpp_007.shtml
cpp_008.shtml
cpp_009.shtml
cpp_010.shtml
cpp_011.shtml
cpp_012.shtml
cpp_013.shtml
cpp_014.shtml
cpp_015.shtml
cpp_016.shtml
cpp_017.shtml
cpp_018.shtml
cpp_019.shtml
cpp_020.shtml
cpp_021.shtml
cpp_022.shtml
cpp_023.shtml
cpp_024.shtml
cpp_025.shtml
cpp_026.shtml
cpp_027.shtml
cpp_030.shtml
cpp_034.shtml
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее