Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы для экзамена по курсу ООП.doc
Скачиваний:
4
Добавлен:
21.04.2019
Размер:
180.22 Кб
Скачать
  1. Встроенные и составные типы данных. Квалификатор const.

Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

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

1nt *(*р[10])();

объявляется массив из 10 указателей на функции без параметров, возвращающих указатели на int.

Основные {стандартные) типы данных часто называют арифметическими, поскольку

их можно использовать в арифметических операциях. Для описания основных

типов определены следующие ключевые слова:

• int (целый);

• char (символьный);

• wchar^t (расширенный символьный);

• bool (логический);

• float (вещественный);

• double (вещественный с двойной точностью).

Первые четыре тина называют целочисленными {целыми), последние два — типами

с плавающей точкой. Код, который формирует компилятор для обработки

целых величин, отличается от кода для величин с плавающей точкой.

Существует четыре спецификатора типа, уточняющих внутреннее представление

и диапазон значений стандартных типов:

• short (короткий);

• long (длинный);

• signed (знаковый);

• unsigned (беззнаковый).

Таблица 1 - Основные типы

Тип

bool

signed char

unsigned char

signed short int

unsigned short int

signed long int

unsigned long int

float

double

long double

Диапазон значений

true и false

-128 ... 127

0 ... 255

-32 768 ... 32 767

0 ... 65 535

-2 147 483 648 ... 2 147 483 647

0 ... 4 294 967 295

3.4e-38 ... 3.4e+38

1.7e-308 ... 1.7C+308

3.4e-4932 ... 3.4e+4932

Размер (байт)

1

1

1

2

2

4

4

4

8

10

  1. Функции языка C++, их отличия от функций языка C.

Функция — это именованная последовательность описаний и операторов, выполняющая

какое-либо законченное действие. Функция может принимать параметры

и возвращать значение.

  1. Рекурсивный вызов функций. Тип «указатель на функцию» (спросить). 82

Рекурсивной называется функция, которая вызывает саму себя. Такая рекурсия называется прямой. Существует еще косвенная рекурсия, когда две или более функций вызывают друг друга. Если функция вызывает себя, в стеке создается копия значений ее параметров, как и при вызове обычной функции, после чего управление передается первому исполняемому оператору функции. При повторном вызове этот процесс повторяется. При завершении функции соответствующая часть стека освобождается, и управление передается вызывающей функции, выполнение которой продолжается с точки, следующей за рекурсивным вызовом.

Классическим примером рекурсивной функции является вычисление факториала (это не означает, что факториал следует вычислять именно так). Для того чтобы получить значение факториала числа n, требуется умножить на n факториал числа (п-1). Известно также, что 0!=1 и 1!=1.

long fact(long n){

i f (n==0 11 n==l) return 1;

return (n * fact(n - D);

}

To же самое можно записать короче:

long fact(long n){

return (n>l) ? n * fact(n - 1) : 1;

}

Рекурсивные функции чаще всего применяют для компактной реализации рекурсивных алгоритмов, а также для работы со структурами данных, описанными рекурсивно, например, с двоичными деревьями (с. 122). Любую рекурсивную функцию можно реализовать без применения рекурсии, для этого программист должен обеспечить хранение всех необходимых данных самостоятельно. Достоинством рекурсии является компактная запись, а недостатками — расход времени и памяти на повторные вызовы функции и передачу ей копий параметров, и, главное, опасность переполнения стека.

  1. Ссылочные переменные.

  2. Передача параметров в функцию.

  3. Аргументы, принимаемые по умолчанию.