Разделы презентаций


Указатели

Определение указателейПри объявлении переменных, компилятор выделяет для них память, размер которой определяется указанным типом и инициализирует их значениями (если они присутствуют). Далее все обращения к этим переменным заменяются на адрес участка

Слайды и текст этой презентации

Слайд 1

У к а з а т е л и

У к а з а т е л и

Слайд 2Определение указателей
При объявлении переменных, компилятор выделяет для них память, размер

которой определяется указанным типом и инициализирует их значениями (если они

присутствуют). Далее все обращения к этим переменным заменяются на адрес участка памяти, в котором хранятся их значения.
Разработчик может сам определять переменные для хранения адресов памяти, т.е. указатели.
Указатель – это переменная, которая может содержать адрес некоторого объекта. Форма объявления указателя:
Тип * Имя_Указателя;
Например: int *a; double *f; char *w;
Определение указателейПри объявлении переменных, компилятор выделяет для них память, размер которой определяется указанным типом и инициализирует их

Слайд 3Звездочка относится непосредственно к Имени_Указа-теля, поэтому для объявления несколько указателей,

ее нужно записывать перед каждым.
Например:
int *a, *b, с;
определены

два указателя на участки памяти для целочисленных данных и целочисленная переменная с.
Значение указателя равно первому байту участка памяти, на который он ссылается. Под указатель любого типа выделяется 4 байта.
В языке Cи имеются три вида указателей
– указатели на объект известного типа;
– указатель типа void;
– указатель на функцию.
Звездочка относится непосредственно к Имени_Указа-теля, поэтому для объявления несколько указателей, ее нужно записывать перед каждым. Например:int *a,

Слайд 4Указатель может быть константой или переменной, а также указывать на

константу или переменную.
С указателями-переменными связаны две унарные операции & и

*.
Операция & означает «взять адрес» операнда. Операция * имеет смысл – «значение, расположенное по указанному адресу» (операция разадресации).
Обращение к объектам любого типа в языке Cи может производиться:
– по имени (идентификатору);
– по указателю (косвенная адресация):
Имя_Указателя = &Имя_Объекта;
*Имя_Указателя – косвенная адресация.
Указатель может быть константой или переменной, а также указывать на константу или переменную.С указателями-переменными связаны две унарные

Слайд 5Операция разадресации используется как для получения значения величины, адрес которой

хранится в указателе, так и для ее изменения (не константы).
Унарная

операция & применима только к адресуемым выражениям (L-значениям), т.е. к переменным для которых выделена память и можно определить ее адрес.
Получить адрес скалярного выражения, самоопределен-ной константы или регистровой переменной (register) нельзя.
Пример:
int x, *y; Переменная int и указатель на объект типа int
y = &x; Адрес переменной x присвоим указателю y
(установим указатель y на переменную x )
*y = 1; По указанному адресу записать значение 1, т.е.
*y = x = 1
Операция разадресации используется как для получения значения величины, адрес которой хранится в указателе, так и для ее

Слайд 6Выражение *Имя_Указателя можно использовать в левой части оператора присваивания, т.к.

оно является L-значением, т.е. определяет адрес участка памяти.
*Имя_Указателя считают

именем переменной, на которую ссылается указатель. С ней допустимы все действия, определенные для величин соответствующего типа (если указатель инициализирован).
Выражение *Имя_Указателя можно использовать в левой части оператора присваивания, т.к. оно является L-значением, т.е. определяет адрес участка

Слайд 7Инициализация указателей
Опасная ошибка – использование неинициализирован-ных указателей, поэтому желательно присвоить

указателю начальное значение уже при объявлении.
Инициализатор записывается после Имени

Указателя либо после знака равенства, либо в круглых скобках. Рассмотрим способы инициализации указателей.
1. Присваивание указателю адреса известного объекта:
а) используя операцию & (получение адреса):
int a = 5;
int *p = &а; Указателю p присвоили адрес объекта а
int *p (&а); То же самое другим способом
б) с помощью ранее определенного указателя (p):
int *g = р;
Инициализация указателейОпасная ошибка – использование неинициализирован-ных указателей, поэтому желательно присвоить указателю начальное значение уже при объявлении. Инициализатор

Слайд 8в) с помощью имени массива или функции, которые трактуются как

адрес начала участка памяти, в котором размещается указанный объект.
Следует

знать, что имена массивов и функций являются константными указателями, которые можно присвоить переменной-указателю, но нельзя изменять, например:
int x[10], *y;
y = x; Присваивание константы переменной
x = y; Ошибка, т.к. в левой части константа.
в) с помощью имени массива или функции, которые трактуются как адрес начала участка памяти, в котором размещается

Слайд 92. Присваивание пустого значения:
int *x1 = NULL;


int *x2 = 0;
Константа NULL – указатель,

равный нулю (можно использовать просто цифру 0), т.е. отсутствие адреса.
Так как объекта с нулевым адресом не существует, то пустой указатель обычно используют для проверки, ссылается указатель на некоторый объект или нет.
3. Присваивание указателю адреса выделенного участка динамической памяти (стандартные функции calloc, malloc использовать не будем) c помощью операции C++ new :
int *n = new int;
Результат этой операции – адрес начала выделенной (захваченной) памяти, при возникновении ошибки – NULL.
2. Присваивание пустого значения:   int *x1 = NULL;    int *x2 = 0;Константа

Слайд 10Операция sizeof (размер …)
Формат
sizeof ( Параметр );
Параметр –

тип или имя объекта (не имя функции).
Операция определяет размер указанного

Параметра в байтах (тип результата int).
Если указано имя сложного объекта (массив, структура), то результатом будет размер всего объекта. Например:
sizeof (int) Результат 4 байта
double b[5];
sizeof (b) Результат 8 байт * 5 = 40 байт
Операция sizeof (размер …)Формат sizeof ( Параметр ); 		Параметр – тип или имя объекта (не имя функции).Операция

Слайд 11Операции над указателями
Помимо уже рассмотренных операций, с указателями можно выполнять

арифметические операции сложения, инкремента (++), вычитания, декремента (--) и операции

сравнения.
Арифметические операции с указателями автоматически учитывают размер типа величин, адресуемых указателями.
Например, инкремент увеличивает (перемещает в право) указатель типа int на 4 байта, а инкремент указателя типа double – на 8 байт, и т.п.
Эти операции применимы к указателям одного типа и имеют смысл в основном при работе с данными, последовательно размещенными в памяти, например, с массивами.
Операции над указателямиПомимо уже рассмотренных операций, с указателями можно выполнять арифметические операции сложения, инкремента (++), вычитания, декремента

Слайд 12При работе с массивами, инкремент перемещает указатель к следующему элементу

массива, декремент – к предыдущему.
Указатель, таким образом, может использоваться

в выражениях вида
p # iv ; ## p ; p ## ; p # = iv ;
p – указатель (pointer), iv – целочисленное выражение (int value), # – символ операции '+' или '–'.
Результат таких выражений – увеличенное или уменьшенное значение указателя на величину
iv * sizeof (*p)
При работе с массивами, инкремент перемещает указатель к следующему элементу массива, декремент – к предыдущему. Указатель, таким

Слайд 13С указателями могут использоваться любые операции сравнения, но чаще используются

отношения равенства или неравенства. Другие отношения имеют смысл только для

указателей на последовательно размещенные объекты (элементы одного массива).
В применении к массивам разность двух указателей равна числу объектов в соответствующем диапазоне, т.е. разность указателей, например, на третий и шестой элементы равна 3.
Суммирование двух указателей не допускается.
Значение указателя в шестнадцатеричном виде можно вывести на экран с помощью функции printf, используя спецификацию %p (pointer), или с помощью cout.
С указателями могут использоваться любые операции сравнения, но чаще используются отношения равенства или неравенства. Другие отношения имеют

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика