
- •2. Общие рекомендации к выполнению и требования к оформлению контрольной работы
- •3. Темы заданий для выполнения контрольной работы
- •4. 1. Базовые средства языка
- •Алфавит языка
- •Ключевые слова языка
- •Идентификаторы
- •Комментарии
- •4.1.5. Типы данных Си
- •Логический тип
- •4.1.8. Операции и выражения
- •Операции присваивания
- •Арифметические операции
- •Логические операции
- •Операции отношения
- •Условная операция
- •Операция преобразования типа
- •Операция определения размера
- •4.1.9. Стандартные функции
- •4.1.10. Структура программы
- •4.1.11. Ввод и вывод данных
- •Функции ввода- вывода
- •Объектно-ориентированные средства ввода-вывода.
- •4.2. Операторы управления
- •4.2.1. Понятие алгоритма
- •4.2.2. Изображение алгоритма в виде блок-схемы
- •2.3. Составной оператор
- •2.4. Операторы ветвления
- •If (выражение) оператор;
- •4.2.5. Примеры программ
- •4.2.6. Оператор варианта
- •4.2.7. Алгоритмы циклической структуры
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Операторы передачи управления
- •4.2.8. Решение задач с использованием циклов
- •4.3. Обработка массивов
- •4.3.1. Описание массивов
- •4.3.2. Основные операции над массивами
- •4.3.3. Ввод-вывод элементов массива
- •4.3.4. Вычисление суммы элементов массива
- •4.3.5. Вычисление произведения элементов массива
- •4.3.6. Поиск максимального элемента и его номера
- •4.3.7. Сортировка элементов в массиве
- •4.3.8. Удаление элемента из массива
- •4.3.9. Решение задач с использованием массивов
- •4.4. Обработка матриц
- •4.4.1. Ввод-вывод матрицы
- •4.4.2. Примеры алгоритмов обработки матрицами
- •4.5.1. Передача параметров в функцию
- •4.5.2. Возврат результата с помощью оператора return
- •4.6. Указатели и динамические массивы
- •4.6.2. Операции * и & при работе с указателями
- •4.6.3. Операция присваивания указателей
- •4.6.4. Арифметические операции над адресами
- •4.6.5. Динамические массивы
- •4.6.6. Использование указателей в качестве аргументов функций
- •Литература
4.5.1. Передача параметров в функцию
Обмен информацией между вызываемой и вызывающей функциями осуществляется с помощью механизма передачи параметров.
Список_переменных, указанный в заголовке функции называется формальными параметрами или просто параметрами функции.
Список_переменных в операторе вызова функции это фактические параметры или аргументы.
Механизм передачи параметров обеспечивает замену формальных параметров фактическими параметрами, и позволяет выполнять функцию с различными данными.
Количество, типы и порядок следования формальных и фактических параметров должны совпадать.
Передача параметров выполняется так:
вычисляются выражения, стоящие на месте фактических параметров;
в памяти выделяется место под формальные параметры, в соответствии с их типами;
формальным параметрам присваиваются значения фактических параметров;
выполняется проверка типов и при необходимости выполняется их преобразование, при несоответствии типов выдается диагностическое сообщение.
Передача параметров в функцию может осуществляться по значению и по адресу.
При передаче данных по значению функция работает с копиями фактических параметров, и доступа к исходным значениям аргументов у нее нет.
При передаче данных по адресу функция обращается к адресам фактических параметров и имеет доступ к ячейкам памяти, в которых хранятся значения аргументов.
Таким образом, данные, переданные по значению, функция изменить не может, в отличие от данных, переданных по адресу.
4.5.2. Возврат результата с помощью оператора return
Возврат результата из функции в вызывающую ее функцию осуществляется оператором
return (выражение);
Работает оператор так:
вычисляется значение выражения, указанного после return и преобразуется к типу возвращаемого функцией значения;
выполнение функции завершается, а вычисленное значение передается в вызывающую функцию;
операторы, следующие в функции за оператором return, игнорируются;
программа продолжает свою работу с оператора следующего за оператором вызова данной функции.
Оператор return может отсутствовать:
в функциях типа void;
если возврат происходит перед закрывающейся фигурной скобкой;
в функции main.
Функция может содержать несколько операторов return.
4.6. Указатели и динамические массивы
Идея работы с указателями состоит в том, что пользователь работает с адресом ячейки памяти и имеет возможность динамически создавать и уничтожать переменные.
4.6.1. Указатели в С++
При обработке оператора объявления переменной
тип имя_переменной;
компилятор автоматически выделяет память под переменную имя_переменной в соответствии с указанным типом:
char C=’$’; //Выделяется память под символьную переменную C
//и ей присваевается стартовое значение.
Доступ к объявленной переменной осуществляется по ее имени. При этом все обращения к переменной заменяются на адрес ячейки памяти, в которой хранится ее значение:
cout<<C; //из ячейки памяти с именем С будет извлечено
//значение и выведено на экран
При завершении программы или функции, в которой была описана переменная, память автоматически освобождается.
Доступ к значению переменной можно получить иным способом – определить собственную переменную для хранения адреса, называемую указателем.
Указатель это переменная, значением которой является адрес памяти, по которому хранится объект определенного типа (другая переменная).
Например, если С это переменная типа char, а Р – указатель на С, значит в Р находится адрес по которому в памяти компьютера хранится значение переменной С.
Как и любая переменная, указатель должен быть объявлен. При объявлении указателей всегда указывается тип объекта, который будет храниться по данному адресу:
тип *имя_переменной;
Например:
int *p;
По адресу, записанному в переменной p, будет храниться переменная типа int или, другими словами p указывает на тип данных int.
Звездочка в описании указателя, относится непосредственно к имени, поэтому чтобы объявить несколько указателей, ее ставят перед именем каждого из них:
float *x, y, *z;
Описаны указатели на вещественное число – x и z, а так же вещественная переменная y.