|
Программирование >> Структурное программирование
постоянное выражение и после этого не может изменяться. Именованные константы часто называют постоянными переменными или переменными только для чтения. Именованные константы могут быть помещены всюду, где может быть помещено постоянное выражение. Другим распространенным применением спецификации const является создание ссылок на константы. С++ позволяет программисту задавать аргументы по умолчанию и их значения по умолчанию. Если аргумент по умолчанию пропускается при вызове функции, используется его значение по умолчанию. Аргументы по умолчанию должны быть крайними правыми (последними) в списке параметров функции. Аргументы по умолчанию должны быть указаны при первом же упоминании имени функции. Значения по умолчанию могут быть константами, глобальными переменными или вызовами функций. Унарная операция разрешения области действия (::) позволяет обеспечить доступ к глобальной переменной в случае, когда локальная переменная имеет в области действия такое же имя. Возможно определение нескольких функций с одинаковыми именами, но разными типами параметров. Эти функции называются перегруженными. При вызове перегруженной функции компилятор выбирает соответствующую функцию, анализируя количество и тип аргументов в вызове. Перегруженные функции могут иметь разные или одинаковые типы возвращаемых значений и обязательно должны иметь разные списки параметров. Две функции, отличающиеся только типами возвращаемых значений, вызовут ошибку компиляции. Шаблоны функций предоставляют возможность создания функций, которые выполняют одинаковые операции над разными типами данных, причем шаблон функции определяется только один раз. Терминология const enum rand RAND MAX return srand template time unsigned void автоматическая переменная автоматический класс памяти активизация функции / амперсанд (&) аргумент вызова функции аргументы функции по умолчанию базовая задача рекурсии библиотека математических функций блок время жизни встраиваемая функция вызванная функция вызов по значению вызов по ссылке вызов функции вызывающая функция вызывающий оператор выражения со смешанными типами генерация случайных чисел глобальная переменная заголовочные файлы стандартной библиотеки заголовочный файл именованная константа итерация класс памяти константа перечисления копия значения локальная переменная масштабирование моделирование модульная программа надежное связывание типов область действия область действия файл область действия функция объявление функции описание функции оптимизирующий компилятор параметры в описании функции перегрузка переменная только для чтения переменные static перечислимый тип побочный эффект повторное использование кода приведение типа аргумента принцип минимизации привилегий прототип функции разработка программного обеспечения рандомизация рекурсивный вызов рекурсия связывание сигнатура смещение скрытие информации спецификации класса памяти спецификация класса памяти auto спецификация класса памяти extern спецификация класса памяти register спецификация класса памяти static спецификация связывания ссылочный параметр стандартная библиотека С тип возвращаемого значения унарная операция разрешения области действия (::) функция функция inline функция факториал шаблон функции Типичные ошибки программирования 3.1. При использовании функций математической библиотеки забывают включать ее заголовочный файл, что приводит к ошибке компиляции. Стандартный заголовочный файл должен быть включен для любой стандартной библиотечной функции, используемой в программе. 3.2. Пропуск типа возвращаемого значения в описании функции вызывает синтаксическую ошибку, если прототип функции определяет возвращаемый тип иначе, чем int. 3.3. Если забыть вернуть значение из функции, в которой предполагается возвращение результата, это может привести к неожиданным ошибкам. Описание языка С-Н- указывает, что результат такой оплошности не определенен. В этом случае обычно компиляторы С-Н-выдают предупреждающее сообщение. 3.4. Возвращение какого-то значения из функции, для которой тип возвращаемого значения объявлен как void, вызывает синтаксическую ошибку. 3.5. Объявление параметров функции, имеющих одинаковый тип, в виде float X, у вместо float х, float у. Объявление параметра float х, у вызовет ошибку компиляции, так как типы надо указывать для каждого параметра в списке. 3.6. Точка с запятой после правой круглой скобки, закрывающей список параметров в описании функции, является синтаксической ошибкой. 3.7. Повторное определение параметра функции как локальной переменной этой функции является синтаксической ошибкой. 3.8. Описание функции внутри другой функции является синтаксической ошибкой. 3.9. Отсутствие точки с запятой в конце прототипа функции является синтаксической ошибкой. 3.10. Преобразование от высшего типа в иерархии типов к низшему может изменить значение данных. 3.11. Отсутствие прототипа функции, когда функция не определена перед ее первым вызовом, приводит к синтаксической ошибке. 3.12. Использование srand вместо rand для генерации случайных чисел. 3.13. Присвоение целого эквивалента константы перечисления переменной перечислимого типа приводит к замечанию (предупреждению) компилятора. 3.14. После того, как константа перечисления определена, попытка присвоить ей другое значение является синтаксической ошибкой. 3.15. Использование нескольких спецификаций класса памяти для одного идентификатора. Для идентификатора может быть указана только одна спецификация класса памяти. Например, если вы указали register, нельзя указать также и auto. 3.16. Непредумышленное использование одинаковых имен идентификаторов во внутреннем и внешнем блоках, когда на самом деле программист хочет, чтобы идентификатор во внешнем блоке был активным во время работы внутреннего блока. 3.17. Забывают возвращать значение из рекурсивной функции, когда оно необходимо. Большинство компиляторов вырабатывает при этом предупреждающее сообщение. 3.18. Пропуск базовой задачи или неправильная запись шага рекурсии, из-за чего процесс не сходится к базовой задаче, приводят к бесконечной рекурсии и существенным затратам памяти. Это аналог бесконечного цикла в итеративном (нерекурсивном) процессе. Бесконечная рекурсия может быть также вызвана вводом неправильной величины. 3.19. Написание программ, которые зависят от последовательности вычисления операндов каких-то операций, отличных от &&, , последования (,) и ?:, может привести к ошибкам, потому что компиляторы могут вычислять операнды не в той последовательности, которую ожидает программист. 3.20. Случайный вызов нерекурсивной функции самой себя либо непосредственно, либо косвенно, через другую функцию. 3.21. Программы на С-Ь-Ь не компилируются, если для каждой функции нет соответствующего ей прототипа или каждая функция не определяется до того, как она используется.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |