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

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

Локальные переменные создаются в перед каждым выполнением «своей» подпрограммы и уничтожаются при ее завершении.

Существует еще возможность объявлять переменные (и константы) вне какой-либо функции. Такие переменные будут называться глобальными. Обычно глобальные переменные объявляют в начале программы, до начала определения функций. Глобальные переменные создаются перед началом выполнения программы и уничтожаются при завершении программы.

Место программы, где объявлена та или иная переменная, имеет важное значение. От этого зависит, в какой части программы эту переменную можно будет использовать, а где – нельзя. Часть программы, в которой переменная доступна для использования, называется ее областью видимости.

Область видимости локальной переменной начинается с места ее объявления и ограничивается блоком, внутри которого она объявлена. Область видимости переменной, объявленной в заголовке цикла, ограничена заголовком и телом цикла.

Областью видимости глобальной переменной является часть программы, начиная с места ее объявления и до конца данного исходного файла. Таким образом глобальная переменная доступна для использования в любой функции в пределах области видимости. На рис.0 представлен пример программы, демонстрирующей использование локальных и глобальных переменных с обозначением областей их видимости.

27. Создание функций в С++

Вызов функции означает команду на ее выполнение.

Структура определения функции:

[Заголовок функции (прототип)] ТипРезультата ИмяФункции (СписокФормАргументов)

{

Инструкции [тело функции]

}

ИмяФункции (СписокФормАргументов)

[точка вызова функции]

28. Аргументы бывают двух разновидностей.

Аргументы первой из них называются формальными. Они указываются в заголовке программы; используются внутри подпрограммы.

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

// Объявление функции. int a - формальный параметр, имя параметра может отсутствовать.

int myfunction(int a);

// Определение функции. int b - формальный параметр, имя параметра может не совпадать с указанным при объявлении функции.

int myfunction(int b)

{

return 0;

}

int main()

{

int c=0;

myfunction(c); // Вызов функции. c - фактический параметр.

return 0;

}

29. Способы возврата результата функции

1. Возврат через имя функции

Что нужно:

· задать непустой ТипРезультата функции (не void)

· для возврата значения в функции использовать инструкцию

return Выражение;

c = summa(a, b) * pow(a*b, 1./3);

2. Запись результата во внешнюю переменную посредством формального аргумента типа указателя или ссылки

Что нужно:

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

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

· если формальный аргумент – типа указателя, то фактическим аргументом должен быть адрес переменной, а если ссылка, то просто имя переменной

· в теле функции разыменовать аргумент-указатель и присвоить внешней переменной значение результата; если аргумент – ссылка, то просто присвоить ей возвращаемое значение.

void Center(double x1, double y1,

double x2, double y2,

double *xc, double *yc)

{

*xc = (x2+x1)/2;

*yc = (x2+x1)/2;

}

30. Массивы применяются для хранения данных чуть ли не в каждой программе. Очень часто возникает необходимость массив, созданный в одной функции (например, в главной), передавать для обработки в другие функции. При этом требуется учитывать ряд моментов, связанных с внутренним устройством массивов в C++, таких как:

· массив в программе на C++ неявно представляет собой указатель на начальный

элемент, т.е. для получения адреса массива в памяти нужно просто указать массива;

· в массиве не хранится никакой информации о его размере.

Поэтому при передаче массивов в функцию используются:

· один формальный аргумент типа указателя на начальный элемент массива;

· один (для одномерных массивов) или несколько (для многомерных массивов)

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

31. Строковые данные (строки) – совокупность символьных значений (или просто символов), хранимых в памяти в виде своих целочисленных кодов.

Для хранения строк используются символьные одномерные массивы.

Обычно хранимые в памяти строки оканчиваются символом с нулевым кодом (пустым символом): '\0' . Такие строки называются С-строками.

Символьный массив szS из 16 элементов*:

char szS[] = "Пример С-строки";

printf("%d", sizeof(szS)); // выведет значение 16

Принципы работы:

  • для хранения C-строк будем использовать обычные символьные массивы

  • для ввода строк с клавиатуры будем использовать стандартную функцию gets

  • для определения длины C-строки (не учитывая «нулевой» символ) ипользуем стандартную функцию strlen

  • для поиска последовательности символов в строке будем использовать стандартную функцию strstr

  • для представления строковых данных будем использовать C-строки

  • будем использовать связь массивов и указателей: имя массива можно использовать как указатель на начальный элемент массива