Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
po_programmirovaniyu_otvety.rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
22.6 Mб
Скачать

Вопрос 21. Область видимости и "время жизни" переменных. Использование статических переменных в функции. Привести примеры.

"Время жизни" это время существования переменной во время работы программы.

Глобальными в C++ называются переменные, объявленные вне любой функции. Их "время жизни" совпадает с временем работы программы. Имя глобальной переменной видно с момента объявления, т.е. в любой точке программы после объявления.

Все переменные, объявленные в теле функции, как и параметры, передаваемые по значению, являются внутренними локальными переменными функции. Это одно из проявлений принципа инкапсуляции.

  • за пределами функции имена объявленных внутри нее переменных не видны, т. е. имя переменной нельзя использовать вне тела функции в других местах программы. Говорят, что область видимости локальных переменных — тело функции.

  • до входа в функцию локальных переменных не существует. Они "рождаются" при входе в функцию и "умирают" при выходе из нее. Говорят, что "время жизни" локальных переменных ограничено временем выполнения. функции. То же относится к параметрам. Данный механизм реализуется с помощью стека: локальные переменные и параметры автоматически размешаются в стеке программы при входе в функцию, а удаляются из стека при выходе из нее.

Вопрос 22. Передача параметров в функцию по ссылке. Привести примеры определения и вызова таких функций в С/C++..

При передаче данных по ссылке в функцию, куда передаются данные, создаются синонимы исходных объектов. Поэтому работа в подпрограмме ведётся именно с исходными объектами. Если в подпрограмме ссылочная переменная изменит значение, то это сразу отразится на исходной переменной.

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

Вернёмся снова к примеру обмена, только данные передадим по ссылке.

Пример:

Void Swap ( int &a, int &b ) // ссылки в заголовке

{ int t = а; а = b; b = t; }

……………………………….

int х = 5, у = 3;

Swap (x, у);

cout << "х = " << х ;

cout << " у = " << у << endl;

……………………………….

x = 3 y = 5

Вопрос 23. Перегрузка функций. Пример реализации перегруженной функции в С/C++.

Использование одного имени для нескольких функций называется перегрузкой (overloading).

Перегрузка функций — это одно из проявлений принципа полиморфизма, присущего объектно-ориентированным языкам программирования.

Функции С++, вычисляющие абсолютное значение своего аргумента:

int abs (int x);

long labs (long x);

double fabs (double x);

long double fabsl (long double x);

Пример:

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

Основное правило перегрузки заключается в том, что перегруженными считаются функции с различными списками параметров.

Перегруженный вариант функции, вычисляющей абсолютное значение своего аргумента:

int abs (int x);

long abs (long x) { return labs(x); )

double abs (double x) { return fabs(x); }

long double abs (long double x) { return fabsl(x); }

Вопрос 24. Одномерные массивы: объявление, инициализация, обработка, использование массивов в С/C++.

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

Пример объявления:

int month[12]; double mas[32]; char letter[40];

Каждый элемент массива имеет определенный номер, который в программировании обычно называют индексом. В C++ принято нумерацию элементов в массиве начинать с нуля.

Инициализация массивов:

1) int month[7] = { 31, 28, 31, 30, 31, 30, 31 };

При инициализации массива разрешается не указывать количество элементов:

int month[] = { 31, 28, 31, 30, 31, 30, 31, 31 };

Обнуление массива с заданным количеством элементов: int v[10] = {0};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]