![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа № 4
УКАЗАТЕЛИ, ФУНКЦИИ
1. Цель работы Освоить правила написания и использования функций в языке СИ. Научиться использовать указатели при обработке массивов данных.
2. Краткие теоретические сведения
Функции в языке СИ оформляются следующим образом:
/* прототип функции */ long func(int, int, int*);
/ * описание функции * / long func (a, b, с) // заголовок int a, b, *с; // описание формальных параметров { long х; // описание локальных переменных ... // тело функции *с=3; // возврат результата по ссылке return x; // возврат результата через имя функции } /* вызов функции */ Main() { long r; int i, j, k; // описание локальных переменных ... r = func (i, j, & k); // вызов }
Указатель в СИ – переменная, содержащая адрес другой переменной. Указатели должны быть описаны в виде: int *ip; // указатель на int float *fp; // указатель на float При работе с указателями используются унарные операции * - обращение по адресу; & - получение адреса;
Таким образом, можно записать
int x, *ip; // описания переменных ip=& x; // присвоение адреса *ip=3; // обращение по адресу
Если указателю присвоен адрес элемента массива, его можно использовать так же, как и имя массива. Следующие обращения к третьему элементу массива s полностью эквивалентны:
int s[10], *p; p=s; s[3]=0; // вариант 1 p[3]=0; // вариант 2 *(p+3)=0; // вариант 3 Операции инкремента (++) и декремента (--) изменяют указатель так, что он будет указывать на соседний элемент данных такого же типа. Например, если fp – указатель на float, операция fp++ увеличит fp на 4, т. е. на количество байт, занимаемых элементом типа float. 3. Методические указания. В ходе выполнения лабораторной работы потребуется выполнить сортировку массива строк. Для ускорения этой операции обычно используется дополнительный массив указателей. В этом случае вместо перестановки двух строк с помощью функции strcpy() используется перестановка указателей обычным присваиванием. Формирование массива указателей можно совместить с вводом строк. 4. Порядок выполнения работы 4.1. Написать программу сортировки массива строк по вариантам (табл. 4.2.). Ввод данных, сортировку и вывод результатов оформить в виде функций. Входные и выходные параметры функции сортировки указаны в таблице. Входные и выходные параметры функций для ввода-вывода приведены в таблице 4.1. 4.2. Модифицировать программу п.1., применив в функциях передачу параметров и возврат результатов по ссылке (с использованием указателей). Сравнить результаты.
Таблица 4.1
Таблица 4.2
5. Содержание отчета 5.1. Задание. 5.2. Листинги программ. 5.3. Тестовый пример.
6. Контрольные вопросы 6.1. Правила описания указателей. 6.2. Как связаны указатели и массивы? 6.3. Назначение прототипа функции. 6.4. Структура описания функции. 6.5. Какие операции допустимы с адресами? 6.6. Массивы указателей – описание и использование. 6.7. Привести пример описания двумерного массива. 6.8. Привести пример доступа к элементу двумерного массива через указатель на него.
|