Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
part1.doc
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
337.41 Кб
Скачать
  1. Контрольные вопросы

  1. Что такое функция? Что такое «определение функции».

  2. Что такое прототип функции? Приведите примеры.

  3. Перечислите способы передачи параметров в функции. Приведите примеры.

  4. Какие объекты программы могут возвращаться как результат работы функции? Приведите примеры.

  5. Как вернуть из функции несколько значений? Приведите примеры.

Лабораторная работа № 5 функции. Массивы указателей.

  1. Цель работы

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

  1. Общие положения

Одно из отличительных свойств С ++ состоит в том, что имя массива генерирует указатель первого элемента массива. Более того, допускаются простые арифметические операции с указателями: если р является указателем на объект определенного типа, можно записать код, предполагающий последовательное расположение объектов данного типа в памяти. При этом для ссылки на первый объект используется запись , на второй - *(р+1), на третий - *(р+2) и т.д. Другими словами, записи *(а + i) и а [i] в языке С ++ эквивалентны. Это создаёт альтернативный механизм доступа к объектам массивов, который иногда оказывается удобнее индексации. Он чаще всего используется для массивов символов (строк).

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

При использовании в программе массива его размер должен быть известен заранее. Для этого применяются два основных механизма С ++. Первый механизм обеспечивает передачу аргументов командной строки главным программам в массиве argv с размером argc. Массив argv является составным и включает объекты, которые сами представляют собой массивы (строки). Пользователь может ввести значение N – размер массива. Второй базовый механизм – оператор new[], выделяющий область памяти, необходимую для массива во время выполнения. В этом случае он возвращает указатель на массив:

int main( int argc, char *argv[])

{ int i, N = atoi (argv[1]);

int *a = new int[N]; …

Массивы могут содержать указатели. Типичным использованием такой структуры данных является формирование массива строк. Каждый элемент такого массива – строка, но строка является, по существу, указателем на её первый символ. Таким образом, каждый элемент в массиве строк в действительности является указателем на первый символ строки.

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

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