Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Указатели




Указатели и массивы

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

 

Метод сортировки Вариант
Вставкой 1, 4, 7, 10, 13, 16, 19, 22
Обменом 2, 5, 8, 11, 14, 17, 20, 23
Выбором 3, 6, 9, 12, 15, 18, 21, 25

Контрольные вопросы

1. Понятие сложности алгоритмов.

2. Постановка задачи сортировки данных.

3. Прямые и быстрые методы внутренней сортировки.

4. Алгоритм сортировки массива методом вставки.

5. Алгоритм сортировки массива методом прямого выбора.

6. Алгоритм сортировки массива методом прямого обмена.

7. Понятие инверсии.

8. Постановка задачи поиска элемента в массиве.

9. Алгоритм последовательного (линейного) поиска.

10. Алгоритм бинарного поиска.


Указатель – это переменная, значение которой равно значению адреса памяти, по которому лежит значение некоторой другой переменной. В этом смысле имя этой другой переменной отсылает к ее значению прямо, а указатель - косвенно. Ссылка на значение посредством указателя называется косвенной адресацией.

Указатели, подобно любым другим переменным, перед своим использованием должны быть объявлены. Объявление указателя имеет вид:

type *ptr;

где type - один из предопределенных или определенных пользователем типов, а ptr - указатель. Например,

int *countPtr, count;

объявляет переменную countPtr типа int* (т.е. указатель на целое число) и переменную count целого типа. Символ * в объявлении относится только к countPtr. Каждая переменная, объявляемая как указатель, должна иметь перед собой знак звездочки (*). Если в приведенном примере желательно, чтобы и переменная count была указателем, надо записать:

int *countPtr, *count;

Символ * в этих записях обозначает операцию косвенной адресации.

Может быть объявлен и указатель на void:

void *Pv;

Это универсальный указатель на любой тип данных. Но прежде, чем его использовать, ему надо в процессе работы присвоить значение указателя на какой-то конкретный тип данных. Например:

Pv = countPtr;

В Cи указатели используются очень широко. Указатели должны инициализироваться либо при своем объявлении, либо с помощью оператора присваивания. Указатель может получить в качестве начального значения 0, NULL или адрес. Указатель с начальным значением 0 или NULL ни на что не указывает. NULL - это символическая константа, определенная специально для цели показать, что данный указатель ни на что не указывает. Пример объявления указателя с его инициализацией:

int *countPtr = NULL;

Для присваивания указателю адреса некоторой переменной используется операция адресации &, которая возвращает адрес своего операнда. Например, если имеются объявления

int Step = 5;

int *ptr, Num;

то оператор

ptr = &Step;

присваивает адрес переменной Step указателю ptr.

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

Для того, чтобы получить значение, на которое указывает указатель, используется операция *, обычно называемая операцией косвенной адресации или операцией разыменования. Она возвращает значение объекта, на который указывает ее операнд (т.е. указатель). Например, если продолжить приведенный выше пример, то оператор

Num = *ptr;

присвоит переменной Num значение 5, т.е. значение переменной Step, на которую указывает ptr.

Здесь необходимо обратить внимание на разночтение символа «*». Если символ «*»стоит перед идентификатором переменной при ее объявлении, то смысл этой «звездочки» - сказать, что объявляется не обычная переменная, а переменная-указатель. Во всех остальных случаях символ «*» читается и воспринимается программой как «взятие значения по адресу», то есть является операцией косвенной адресации.




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 465; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.