Вопросы по лекционным материалам для подготовки к лабораторным занятиям и экзаменам
по дисциплине «Программирование»
1-й курс, II семестр (C++)
Потоки
1) Что такое потоки ввода/вывода?
2) Какие существуют виды потоков ввода/вывода?
Стандартные потоки
3) Что такое стандартные потоки ввода/вывода?
4) Какие еще бывают?
5) Какой заголовочный файл нужно подключить для использования стандартных потоков?
6) Перечислите идентификаторы стандартных потоков?
7) Чем отличается их использование от использования файловых потоков?
8) Что такое форматированный вывод (ввод)?
9) Зачемоннужен?
10) С помощью каких различных средств потока его можно реализовать?
11) Как осуществляется форматированный вывод вещественных чисел с заданной точностью?
12) Как с помощью средств форматного вывода потока наиболее компактно реализовать вывод на экран строки из 80 символов ‘*’?
13) В какой момент и каким образом поток будет реагировать на наличие недопустимых символов и других ошибок во введенном пользователем числе? Какие возможны варианты ввода пользователем некорректного числового значения? Как для каждого из них можно обнаружить наличие ошибки и обработать её? Показать на примерах.
14) Какими способами и с помощью каких средств потока можно реализовать ввод числового значения из стандартного потока с проверкой его (значения) корректности с учетом всех возможных ошибок? Чем эти способы отличаются друг от друга с точки зрения их устойчивости к различным возможным ошибкам ввода?
15) Что нужно сделать, чтобы обеспечить возможность повторного ввода числового значения, если введенное было некорректно?
16) Спомощьюкаких средств стандартного потока ввода и как можно ввести строковое значение, представляющее собой ФИО сотрудника? Привести пример.
Файловые потоки
17) Что такое файловые потоки ввода/вывода?
18) Какие еще бывают?
19) Какой заголовочный файл нужно подключить для их использования?
20) Какие типы файловых потоков существуют (перечислить идентификаторы типов)?
21) Для чего каждый из них предназначен?
22) Какой режим открытия каждый из них имеет по умолчанию?
23) В какой момент (в каком месте программы) лучше открывать и закрывать каждый используемый файловый поток?
24) Перечислите способы открытия файловых потоков.
25) В чем между ними (способами открытия) разница?
26) В каких случаях какой способ удобней применять?
27) Сколько аргументов может быть указано при открытии файлового потока?
28) За что каждый из них отвечает?
29) Какие значения каждый из них может иметь?
30) Можно ли файловый поток для записи данных в файл открывать в режиме, задаваемом как ios::in|ios::out[|…]? Если да, то для каких типов файловых потоков указание такого режима уместно? В чем особенность такого режима открытия?
31) Какие еще флаги режимов открытия бывают? В каких еще комбинациях и для каких типов потоков они могут применяться? Какой будут иметь эффект?
32) Как средствами потока проверить существование файла с заданным именем, например, для принятия решения о необходимости вывода пользователю запроса на перезапись этого файла, если далее будет осуществляться запись данных в него? Потоки каких типов для этого можно использовать?
33) Как открыть файловый поток, чтобы, пока он открыт, другие программы могли открывать связанный с ним файлтолько для чтения?
34) Всегда ли операция открытия файлового потока будет выполнена успешно?
35) Каковы могут быть причины неудачи?
36) Как проверить результат выполнения операции открытия файлового потока?
37) Какие различные средства для этого есть у потока? Какие варианты записи такой проверки допустимы?
Состояние потока
38) Что такое состояние потока?
39) Из чего оно состоит?
40) В результате чего оно изменяется? Когда и какие значения имеют его составляющие?
41) На что оно влияет?
42) Как получить состояние потока и отдельные его (состояния) составляющие?
43) Как изменить в нем значения всех или отдельных флагов? Какими способами и средствами потока можно это сделать?
44) Как за одно действие (в одном операторе)сбросить значениеодного или нескольких определенных битов состояния потока, оставив без изменения остальные биты?
45) Как за одно действие (в одном операторе) сбросить значения всех кроме одного или нескольких определенных битов состояния потока, оставив этот один или несколькобез изменения?
46) Как за одно действие (в одном операторе) установить один или несколькоопределенных битов состояния потока, оставив без изменения остальные биты?
47) К чему приведет вызов s.clear(ios::failbit)?
48) К чему приведет вызов s.setstate(ios::goodbit)?
49) Перечислите средства файловых потоков для чтения (записи) данных разных типов из (в) тестовых файлов.
50) Для чего предназначена операция извлечения из потока? Для работы с файлами какого формата она предназначена?
51) Как осуществляется процесс чтения данных разных типов с помощью операции извлечения из потока? Что при этом происходит с указателем потока? Показать на примерах.
52) Как можно проверить (в простейшем случае) результат выполнения операции чтения из потока (записи в поток)? Какими различными способами это можно сделать и какие варианты их записи допустимы?
53) В чем могут быть причины неуспешности выполнения операции чтения данных из текстового файла с помощью потока?
54) Какие проблемы возникают при применении простого способа проверки корректности числового значения, считываемого из текстового файла с помощью потока, и с чем они связаны?
55) Как можно реализовать надежную проверку корректности числового значения, считываемого из текстового файла с помощью файлового потока? Какие существуют способы решения этой задачи? С помощью каких средств потока?
56) На чем основан подсчет количества числовых значений, находящихся в текстовом файле, с использованием файлового потока?
57) Какие могут быть особые случаи задания исходных данных, представляющих собой последовательность числовых значений, в файле пользователем и как их нужно обрабатывать для обеспечения правильного подсчета количества этих значений?
58) Как можно совместить подсчет количества числовых значений с проверкой их корректности и получением информации о положении некорректного значения в файле, если такое есть?
Буфер потока
59) Что представляет собой буфер потока?
60) Зачем он нужен вообще?
61) Для чего (решения каких задач) его можно использовать в частности?
62) Как получить к нему доступ?
63) Как очистить содержимое буфера потока (удалить из него все символы)?
64) Как пропустить (без удаления) все символы, находящиеся в буфере потока?
Указатель потока
65) Что такое указатель потока?
66) Какие виды указателей у каких типов потоков бывают?
67) Какие операции с потоком изменяют положение указателя потока и как?
68) В каких единицах задается положение указателя потока?
69) Где он находится после открытия потока для большинства режимов открытия? Какие режимы являются исключением?
70) Какими способами можно переместить указатель в начало? В произвольное место? Какие для этого есть средства у потока, варианты их реализации и применения:
какие операторы и функции, в какой последовательности, с какими аргументами и почему?
71) Для чего предназначена компонентная функция потока fail()?
72) Как связаны компонентные функции потока fail()и eof()с состоянием потока?
73) Чем отличаются компонентные функции потока peek()и get()?
74) Для чего предназначена компонентная функция потока unget()?Приведите примеры уместного применения этой функции. Как иначе можно добиться того же эффекта?
75) Какими простыми способами с помощью файлового потока можно определить размеры матрицы, находящейся в текстовом файле? В чем их недостатки?
76) Объяснить принцип (алгоритм) наиболее надежного (и наименее требовательного к заданию исходных данных пользователем)определения с помощью файлового потока размеров числовой матрицы, находящейся в текстовом файле, основанный на посимвольном чтении и обработке данных. С применением каких средств потока этот способ реализуется?
77) Объяснить принцип (алгоритм) наиболее надежного (и наименее требовательного к заданию исходных данных пользователем) определения с помощью файлового потока размеров числовой матрицы, находящейся в текстовом файле, основанный на совместном применении поэлементного и посимвольного чтения и обработки данных. С применением каких средств потока этот способ реализуется? Какие преимущества он имеет по сравнению с предыдущим?
Работа с двоичными файлами с помощью потока
78) Чем отличаются текстовые файлы от двоичных? Что представляет собой содержимое каждого из них?
79) Что можно сказать о компактности хранения данных различных типов в текстовых и двоичных файлах?
80) В каких случаях какой формат использовать предпочтительней?
81) При сохранении с помощью файлового потока некоторых данных в файл, чем определяется то, в каком формате эти данные будут сохранены в файл: в текстовом или в двоичном?
82) С помощью каких средств файлового потока осуществляется чтение и запись двоичных данных? Как этими средствами пользоваться? Привести примеры.
83) Как реализуются поэлементное и всего массива сразу двоичные чтение и запись с помощью файлового потока?
84) За что отвечает флаг ios::binary? В каких случаях его можно/нужно указывать?
85) Что такое трансляция символов? Для чего она нужна? В чем она заключается? Когда она имеет место? На что она может повлиять?
86) Какой режим трансляции символов используется по умолчанию?
87) Какими способами можно определить количество однотипных записей (элементов массива) в двоичном файле?
88) С помощью каких средств потока и как эти способы реализуется?
89) Чем эти способы отличаются друг от друга с точки зрения надежности и быстродействия?
90) Как надежность этих способов зависит от использования флагаios::binary?
Динамическая память
91) Зачем нужно динамическое выделение (и освобождение) памяти?
92) Чем отличается статическоераспределение памяти от динамического?
93) Какие преимущества и недостатки имеет динамическоераспределение памяти по сравнению со статическим?
94) В каких случаях динамическое распределение памяти использовать не стоит?
95) Что такое указатель?
96) В каких случаях используются указатели? Привести примеры.
97) Какие бывают указатели?
98) Как объявляются переменные типа указатель?
99) Что является значением переменной типа указатель?
100) Как выделяется память для самой переменной типа указатель?
101) Сколько памяти занимает переменная типа указатель? От чего это зависит?
102) Как схематично изобразить указатель и связанную с ним область памяти (на которую он указывает)?
103) Что представляет собой адрес? Какова минимальная единица адресации памяти?
104) Что такое фрагментация памяти? Из-за чего она происходит? На что влияет?
105) В какой момент нужно выделять память динамически? Почему?
106) В какой момент нужно освобождать выделенную память? Почему?
107) В какой момент нужно проверять результат выполнения операции выделения памяти? Почему?
108) С помощью каких операций языка осуществляется выделение и освобождение динамической памяти?
109) Какие варианты обнаружения и обработки ошибки выделения памяти возможны? Привести примеры, объяснить отличия. От чего и как зависит вероятность ошибки?
110) Какое значение получит переменная p в результате выполнения оператора вида тип *p=new тип[0];? Что это означает с точки зрения возможности использования выделенной памяти и необходимости её последующего освобождения?
111) Что такое пустой указатель? Зачемоннужен?
112) Будет ли синтаксически правильным оператор вида тип *p=new тип(5);? Если да, то каков его смысл? Если нет, то почему?
113) Как выделить память под скалярное (одиночное) значение некоторого типа данных?
114) Каков синтаксис применения операции освобождения памяти? Всегда ли он одинаков? Если нет, то от чего и как зависит? Что должно быть указано в качестве операнда в этой операции?
115) Что становится с указателем после применения к немуоперации освобождения памяти?
116) Каков смысл унарной операции *?Чем должен являться ее операнд?
117) Каков смысл унарной операции &? Чем должен являться ее операнд?
118) Всегда ли указатели применяются только совместно с динамическим выделением памяти? Для чего еще они могут применяться? Привести примеры.
119) Что такое адресная арифметика? В чем заключается ее суть? Какие выражения к ней относятся? Подробно объяснить на примерах со схемами.
120) Для каких указателей возможно применение адресной арифметики? Почему?
121) Для чего (решения каких задач, выполнения каких действий) можно и удобно применять адресную арифметику? Привести примеры и обосновать целесообразность её применения.
122) Перечислить возможные варианты организации динамической памяти для хранения матричных (двумерных массивов) данных. Продемонстрировать их на схематичных изображениях. Перечислить их отличительные особенности, достоинства и недостатки, условия применимости. Описать для каждого варианта процессы выделения и освобождения памяти, обработки ошибок выделения памяти.
123) Что представляют собой списковые структуры данных? Чем они отличаются от массивов?
124) Какие бывают списки? Схематично изобразить организацию памяти для списковых структур различных типов.
125) В каких случаях (для решения каких задач) используются списки?
126) Какую информацию о размещенном в памяти списке необходимо/полезно иметь для работы с ним?
127) Привести примеры объявления типов данных, используемых для создания списка.
128) Каков типичный перечень операций, выполняемых со списками? Объяснить алгоритм каждой из них, демонстрируя последовательность выполняемых действий на схеме организации памяти. Как те же самые операции реализовывались бы для массивов?
Библиотечные функции для работы с динамической памятью
129) Перечислить библиотечные функции для динамического распределения памяти (выделения, изменения размера выделенного блока и освобождения динамической памяти).
130) Какой заголовочный файл нужно подключить для их использования?
131) Привести пример оператора выделения памяти с помощью одной из библиотечных функций, объяснить из чего он состоит.
132) Какой результат вернут функции выделения нового и изменения размера существующего блока памяти, если размер запрашиваемого блока равен 0? Что это означает с точки зрения возможности использования выделенной памяти и необходимости её последующего освобождения?
133) Какой результат вернут эти функции в случае невозможности выделения блока памяти запрашиваемого размера? От чего и как зависит вероятность ошибки?
134) Объяснить и показать на схеме алгоритм работы функции для изменения размера выделенного блока памяти: в каких случаях что она делает и какой результат возвращает. Каков принцип ее корректного (с точки зрения предотвращения возможной утечки памяти) использования?
135) Что становится с указателем после использования его в качестве аргумента библиотечной функции освобождения памяти?
136) Какими способами и средствами можно реализовать вставку элемента в заданную позицию массива, память под который распределена динамически?
Функции форматного ввода/вывода
137) Привести классификацию библиотечных функций форматного ввода/вывода. Объяснить назначение и отличия в использовании функций каждой группы.
138) Какой заголовочный файл нужно подключить для их использования?
139) Чем отличаются безопасные версии функций форматного ввода от небезопасных? Почему они считаются безопасными?
140) Как зависит требуемый список аргументов при вызове безопасных версий функций форматного ввода от типа вводимых значений?
141) Как формируется результат (возвращаемое значение) функций форматного ввода?
142) Что может входить в состав строки формата в функциях форматного ввода? Каков ее «формат» и предоставляемые им возможности?
143) Как осуществляется процесс чтения данных в соответствии с заданной строкой формата?
144) Может ли функция форматного ввода иметь строку формата вида “d=%d”? Ответ обосновать. Если может, то какого видаданные она (функция) в этом случае сможет успешно прочитать? Сколько и какого типа данных должны быть соответствующиеаргументы, указываемые при вызове функции для получения считанных значений, и что в нихбудет помещено в результате чтения? Привести пример вызова. Если не может, то объяснить почему.
145) Какой тип данных должны иметь аргументы функций форматного ввода, являющиеся приёмниками данных для соответствующих полей ввода в строке формата?
146) Перечислите обозначения (символы или последовательности символов) типов в спецификаторах полей ввода в строке формата, используемые для ввода значений основных типов данных.
147) Какой смысл имеет символ *, находящийся в начале спецификатора поля ввода при вызове функций форматного ввода? Не в начале?
148) Чем отличается при вызове функций форматного ввода обработка не входящих в спецификаторы полей ввода символов-разделителей от символов-неразделителей?
149) Чем определяется необходимое количество аргументов, следующих за строкой формата, при вызове функций форматного ввода?
150) Как с помощью функции форматного ввода считать значение в вещественную переменную двойной точности?
151) Как с помощью функции форматного ввода считать из источника данных с текущей позиции указателя массив символов заданной длины? С подавлением присвоения? Без него? Привести примеры вызова безопасной версии функции. В чем особенности чтения таких данных?
152) Как считать из источника данных с текущей позиции указателя строку заданной длины? С подавлением присвоения? Без него? Привести примеры вызова безопасной версии функции. В чем особенности чтения таких данных?
153) Как с помощью функции форматного ввода считать из источника данных одно ближайшее слово? С подавлением присвоения? Без него? Привести примеры вызова безопасной версии функции. В чем особенности чтения таких данных?
154) Каким образом в строке формата для функций форматного ввода можно задать пропуск в источнике данных последовательности всех символов-разделителей, начиная с текущей позиции указателя?
155) Что будет считано из источника данных с помощью функции форматного ввода со строкой формата вида “%32s”? Какие типы данных может иметь переменная-приёмник считываемых данных? Привести пример вызова безопасной версии такой функции.
156) Как с помощью функции форматного ввода ввести с клавиатуры строковое значение, представляющее собой ФИО сотрудника? Привести пример вызова безопасной версии такой функции.
157) Что такое управляющая строка? В каких функциях она используется и для чего предназначена? Каков синтаксис ее задания?
158) Перечислите отличия в работе функции форматного ввода при чтении значения с типами, задаваемыми в спецификаторе поля ввода с помощью s, c и [.
159) Что такое подавление присвоения при форматном вводе? Как оно реализуется? Какие особенности имеет такой ввод? Как подавление присвоения влияет на результат, возвращаемый функциями форматного ввода?
160) Объяснить принцип надежной проверки корректности числового значения, вводимого с помощью функции форматного ввода с клавиатуры или из текстового файла. С помощью каких средств и как он реализуется? В чем отличие между проверкой для ввода с клавиатуры и проверкой для ввода из текстового файла?
161) Что нужно сделать, чтобы обеспечить возможность повторного ввода числового значения с клавиатуры, если введенное было некорректно?
162) Какие могут быть варианты ввода пользователем некорректного числового значения и как функция форматного ввода будет осуществлять его чтение для каждого из вариантов (перемещение указателя, считанное значение, результат функции)? Показать на примерах.
163) Что может входить в состав строки формата в функциях форматного вывода? Каков ее «формат» и предоставляемые им возможности?
164) Перечислите обозначения (символы) типов в спецификаторах полей вывода в строке формата для вывода значений основных типов данных.
165) Как безопасно осуществить форматный вывод строки, содержимое которой заранее неизвестно и может быть любым?
166) Как форматированно вывести некоторое значение с выравниванием по левому краю? Выравнивание по краю чего именно в этом случае происходит?
167) Как форматированно вывести вещественное значение с заданной точностью?
168) Как с помощью функций форматного вывода вывести первые nсимволов строки?
Библиотечные функции для работы с файлами
169) Что такое стандартные файлы? Перечислите их идентификаторы?
170) Чем отличается их использование от использования не стандартных файлов?
171) Перечислите библиотечные функции для открытия файла. Чем они отличаются? Какие параметры имеют? Каково назначение каждого из этих параметров и какие значения они могут иметь? Какой результат эти функции возвращают? Как (какими способами) можно проверить результат открытия файла каждой из этих функций?
172) В каких режимах возможно открытие файлов? Как эти режимы задаются?
173) Как осуществляется управление режимом трансляции?
174) Как открыть файл, чтобы, пока он открыт, другие программы могли открывать его как для чтения, так и для записи?
175) Каковы могут быть причины неуспешности открытия файла?
176) Какой тип данных имеет файловая переменная для работы с этими функциями?
177) Перечислите функции для перемещения указателя файла? Приведите список параметров и назначение каждого из них в этих функциях?
178) Для чего предназначена функция fflush(…)?Приведите пример уместного применения этой функции.
179) Для чего предназначена функция ungetc(…)?Приведите пример уместного применения этой функции.
180) На чем основан подсчет количества числовых значений, находящихся в текстовом файле, с использованием библиотечных функций?
181) Какие могут быть особые случаи задания исходных данных, представляющих собой последовательность числовых значений, в файле пользователем и как их нужно обрабатывать для обеспечения правильного подсчета количества этих значений?
182) Как можно совместить подсчет количества числовых значений с проверкой их корректности и получением информации о положении некорректного значения в файле, если такое есть?
Функции пользователя
183) Каково назначение подпрограмм (функций)? Какие преимущества дает их реализация и использование?
184) К чему нужно стремиться, выполняя декомпозицию задачи на подзадачи и реализуя их в виде функций?
185) Для чего нужны параметры функций?
186) Что такое формальный параметр?
187) Что такое фактический параметр?
188) Что такое аргумент?
189) В какой памяти размещается аргумент?
190) Каково время существования аргумента?
191) Каково время существования параметра?
192) В какой памяти размещается параметр?
193) Что такое локальная переменная функции?
194) Каково время существования локальной переменной?
195) В какой памяти размещается локальная переменная?
196) Что такое соглашение по вызову функции? Что им определяется? Когда его нужно учитывать?
197) Что такое описание функции?
198) Что такое определение функции?
199) Что такое прототип функции? Зачем он нужен?
200) Какие правила и допущения распространяютсяна написание прототипа?
201) Что такое сигнатура функции? Зачем она нужна?
202) Как классифицировать параметры по направлению передачи данных через них?
203) Какие существуют способы передачи параметров?
204) Продемонстрируйте на схеме и опишите механизм работы каждого способа передачи (что, с чем и в какой момент происходит).
205) Как выбрать наиболее подходящий способ передачи для какого-то конкретного параметра(из соображений обеспечения возможности передачи данных в нужном направлении и ее эффективности)?
206) Как зависит возможность передачи от выбранного способа передачи?
207) Как зависит эффективность передачи от выбранного способа передачи?
208) Чем определяется грань между эффективной передачей и неэффективной?
209) Какие существуют варианты реализации одного из способов передачи? Привести пример определения и вызова одной и той же функции с разными вариантами реализации этого способа передачи для некоторого выбранного параметра.
210) Что такое ссылка? Для чего используются ссылки? Каковы правила и ограничения объявления ссылки и ее дальнейшего использования?
211) Какой способ передачи имеет параметрchar *c, если через него передается строка или массив символов? Какой способ передачи имеет такой параметр, если через него передается один символ?
212) Какой способ передачи имеет параметр char **c, если через него передается строка или массив символов? Какой способ передачи имеет такой параметр, если через него передается двумерный массив символов или массив строк?
213) Каково назначение параметров со значениями по умолчанию? Привести пример их уместного применения?
214) Как (в соответствии с какими правилами и каким синтаксисом) осуществляется их объявление и вызов содержащей их функции?
215) В каком порядке разумно объявлять параметры со значениями по умолчанию?
216) Как защитить значение параметра от случайного изменения внутри функции (в т. ч. если он является указателем)?
217) Как должен быть объявлен входной параметр большого размера, для того чтобы в качестве аргумента можно было использовать нелеводопустимоезначение и передача данных через этот параметр была эффективна?
218) Как объявить необязательный выходной параметр функции?
219) Можно ли возвращать из функции через её результат или через выходной параметр указатель или ссылку на её параметр или локальную переменную? Почему?
Список параметров переменной длины
220) Каково назначение списка параметров переменной длины? Привести пример библиотечных функций с переменным числом параметров.
221) Каков синтаксис и правила объявления списка параметров переменной длины?
222) Какие трудности возникают при обработке списка параметров переменной длины?
223) Какие существуют подходы к заданию и обработке списка параметров переменной длины? Как они реализуются? С помощью каких средств языка?
224) От чего зависит то, как надо обрабатывать список параметров переменной длины?
Результат функции
225) Где задаётся тип данных для результата, возвращаемого функцией?
226) Результат каких типов данных может возвращать функция?
227) Результат каких типов данных функция возвращать не может? Как быть в этом случае, если «очень надо»?
228) Обязательно ли функция должна возвращать какой-либо результат? Если нет, то как это указать?
229) В чем разница с точки зрения вызова между функцией с типом результата voidи функцией с другим типом результата?
230) Для чего предназначен оператор return? Каков синтаксис его использования? Что происходит при его выполнении?
231) Может/должен ли он присутствовать в функции с типом результата void?
232) Может/должно ли в операторе return в функции с типом результата voidбыть указано какое-либо значение?
233) Может/должен ли оператор return присутствовать в функции с типом результата не void?
234) Может/должно ли в операторе return в функции с типом результата не voidбыть указано какое-либо значение?
Перегрузка функций
235) Что такое перегрузка функций? Зачем она нужна?
236) На основании чего компилятор выбирает для определенного вызова нужный вариант перегруженной функции?
Шаблоны функций
237) Зачем нужны шаблоны функций?
238) С чем их можно сравнить (на что они похожи и какие есть отличия)?
239) Что параметризуется в шаблоне функции?
240) Из каких частей состоит шаблон функции?
241) Каков синтаксис описания шаблона функции?
242) Что такое формальный параметр шаблона?
243) Могут ли совпадать имена формальных параметров в пределах одного шаблона функции?
244) Могут ли в шаблоне функции присутствовать формальные параметры, которые в нем не используются?
245) Что является фактическими параметрами шаблона?
246) Что такое аргумент шаблона?
247) Что такое инстанциирование шаблона? Когда оно происходит?
248) Сколько раз осуществляется инстанциирование шаблона для каждой допустимой комбинации значений фактических параметров шаблона, если каждая такая комбинация встречается в программе несколько раз?
249) Для каких формальных параметров шаблона и на основании чего возможноавтоматическое (неявное) определение компилятором значений соответствующих фактических параметров?
250) Для каких формальных параметров шаблона невозможноавтоматическое (неявное) определение компилятором значений соответствующих фактических параметров?
251) Как осуществляется явная спецификация (указание) фактических параметров шаблона?
252) Всегда ли обязательна явная спецификация всех фактических параметров шаблона при его инстанциировании? Если нет, то для каких формальных параметров шаблона соответствующие фактические могут быть опущены? Где они должны находиться в списке параметров шаблона?
Подставляемые функции
253) Что такое подставляемые функции? В чем суть подстановки?
254) Какие преимущества дает использование подставляемых функций? Какие имеет особенности и недостатки?
255) Какие функции имеет смысл делать подставляемыми?
256) Каков синтаксис объявления и определения подставляемой функции?
257) Гарантирует ли применение соответствующего спецификатора(служебного слова) подстановку функции?
258) Перечислите основные причины, по которым подстановка функции может оказаться невозможной?
259) Как осуществляется компиляция функции и ее вызовов, если подстановка невозможна?
Макроопределение с параметрами
260) Как можно реализовать аналог функции с помощью макроопределения с параметрами? Привести пример.
261) Как осуществляется раскрытие (подстановка) такого макроопределения? Что нужно учитывать во избежание ошибок?
262) Какие могут возникать побочные эффекты при применении таких макроопределений? Привести пример.
263) На что такие макроопределения похожи? Что общего? В чем различие?
Указатель и ссылка на функцию
264) Привести примеры объявления типов данных и переменных, являющихся указателями или ссылками на функцию. Привести примеры инициализации этих переменных и вызова функций с помощью них.
265) Для решения каких задач полезны указатели и ссылки на функции? Привести примеры.
Задание и обработка параметров запуска приложения, возврат и обработка кода завершения приложения
266) Какимобразом приложению при запуске передаются параметры?
267) Что из переданного приложению при запуске считается значением каждого отдельного параметра?
268) Как приложение определяет их количество и осуществляет доступ к каждому из переданных параметров?
269) Каким типом данных представлены значения параметров запуска приложения?
270) Как приложение возвращает код своего завершения? Кем и как он может быть получен и обработан?
271) Привести пример реализации в приложении перечисленных возможностей.
Модули
272) Каково назначение модуля?
273) По какому принципу осуществляется выбор содержимого создаваемого модуля?
274) Какие преимущества имеет создание и использование собственного модуля?
275) Из каких частей (файлов) он состоит?
276) Как назначается имя и расширение каждого файла?
277) Каково назначение каждого файла?
278) Какова типичная структура и содержимое каждого файла?
279) Где должна находиться защита от повторного включения (компиляции)?
280) В каком случае возможна повторная компиляция? Привести пример.
281) Какими способами можно реализовать защиту от повторного включения (компиляции)?
282) Как она работает (каков алгоритм) в варианте ее реализации с помощью директив условной компиляции?
283) Каким требованиям должно удовлетворять определяемое символьное имя (в варианте реализации с помощью директив условной компиляции)?
284) Какова разница между применением кавычек вида<…> и "…" в директиве#include?
Обработка строк
285) Что представляет собой строка (строковое значение)? В чем ее особенность?
286) Как реализовать определение длины строки?
287) Как реализовать копирование строк?
Разное
288) Как определить размер памяти, необходимой для размещения в ней значения определенного типа данных? Памяти, занимаемой определенной переменной или константой?


