![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Урок 18. Действия с указателямиСодержание книги
Поиск на нашем сайте
Доступ к данным по указателю После того как связали переменную и указатель, наша задача - использовать эту связку в своих целях, т.е. получить данные через указатель. Эту операцию делает возможной знакомая звездочка. На самом деле «звездочка» *, присутствующая в записи имени указателя - это оператор косвенного доступа к переменной, то есть через указатель. Примененный к указателю, он выдает значение переменной, на которую данный указатель указывает. int *p; // Объявлен указатель на переменную целого типа Другое название косвенного доступа – операция разыменования. Когда использовать звездочку Как вы могли заметить в предыдущем примере, звездочка перед именем указателя появляется не всегда. То есть, переменную-указатель можно в программе использовать разными способами p = i; Дело в том, что ячейка p может хранить только адрес, или, точнее, данные типа "адрес", а ячейка i - данные целого типа. Налицо несоответствие типов слева и справа от присваивания. *p = 8; совершенно корректно. Нулевой адрес Для указателей, которые не хранят никаких адресов, введена константа «нулевой адрес», с именем NULL. int *p; Эта константа может быть присвоена указателю на переменную любого типа. Нулевой адрес можно использовать чтобы "разорвать связь":
Как использовать указатели
Поскольку результатом операции косвенного доступа является значение переменной, на которую указывает указатель, то запись *p (вместе звездочка и имя указателя) можно рассматривать как привычную переменную целого типа и выполнять с ней все арифметические и прочие операции, например: *p = sqrt(*p+2); Механизм указателей очень гибкий, в чем убедимся из дальнейших примеров. Пока что рассмотрим следующий небольшой пример: int a=1; // переменной целого типа присвоена 1 На картинке это выглядит так: Еще один пример демонстрирует связь операций получения адреса и звездочки. Пусть есть описание двух вещественных переменных и указателя на соответствующий тип: float x,y,*ptr; Два оператора присваивания ptr=&x; выполняют то же самое, что и один оператор присваивания y=x. Указатели широко используются программистами-профессионалами. Язык Си позволяет резервировать любой "кусок" памяти (в байтах), возвращая адрес, который можно хранить в указателе. Этот процесс известен как динамическое резервирование памяти. С его помощью программа может использовать всю имеющуюся на компьютере память. Вопросы для самопроверки 1. В каких операциях в программе указатель используется без звездочки и когда со звездочкой?
|
||||||||||||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 582; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.97.14.85 (0.007 с.) |