Similar presentations:
урок 6
1.
Курс«С++ разработчик»
Урок 6
2.
Указатели и адресаКаждая переменная в программе – это объект, имеющий имя и значение. По имени можно
обратиться к переменной и получить её значение.
Указатели - это переменные, значениями которых являются адреса других переменных
(описывает расположение переменной в машинной памяти).
Синтаксис: при объявлении указателя используется символ звездочка (*):
ТИП* ИМЯ_УКАЗАТЕЛЯ;
Здесь ТИП это тип переменной, адрес которой может храниться в указателе.
3.
Указатель (pointer)Указатель (pointer) – это переменная, значением которой является адрес другой переменной.
Тип указателя обязательно должен совпадать с типом переменной, адрес которой он хранит.
Применение указателей предоставляет возможность создавать динамические структуры данных, размер которых
определяется не при компиляции программы, а в процессе ее исполнения.
Тип* Идентификатор ;
Тип *Идентификатор ;
Тип *Идентификатор1, …, *ИдентификаторN ;
char* ps ;
float *ptr ;
int *px, *py ;
char* p, ch ;
char* ps2 (0) ;
int *px2 = 0;
Нельзя использовать в программе указатель, значение которого не определено.
4.
Операции с указателями5.
Арифметические операции, связанные с увеличением указателя на целоезначение, модифицируют значение указателя на число, соответствующее
произведению этого числа на количество занимаемых типом указателя
байтов. Инкремент модифицирует указатель не на 1, а на число байтов,
которое занимает тип указателя. Арифметические операции, которые
уменьшают указатель на целое число, выполняют такую же модификацию, но
в сторону уменьшения значения адреса.
6.
Операторы new и deleteОператор new выделяет блок памяти и возвращает указатель на
первую ячейку этого блока. Если new не в состоянии найти
необходимое пространство свободной памяти, он возвращает
указатель 0.
int* pi ;
pi = new int(50) ;
7.
Операторы new и deleteОператор delete освобождает память, выделенную ранее
оператором new.
int x = 5;
int* py = new int ( x ) ;
*py += 5;
cout << *py << endl ;
cout << x << endl;
delete py ;
cout << py << endl;
8.
СсылкиСсылка (reference) – является альтернативным именем переменной, указанной при
инициализации ссылки. Ссылка является переменной, которая содержит адрес другой
переменной. По существу – это неявный указатель с константным значением адреса.
Особенности ссылок:
1. Ссылка при объявлении обязательно должна быть проинициализирована
(исключением является объявление ссылки в качестве члена-данного).
2. Значение ссылки не может быть изменено в ходе работы программы.
3. Для получения данных по ссылке не надо пользоваться операцией разыменовывания.
4. Нельзя создавать указатель на ссылку (у ссылки нет адреса).
5. Нельзя создавать массивы ссылок.
Тип& ИмяСсылки (ИмяЯвнойПеременной) ;
9.
Указатель – это переменная, а имя массива это константа, равнаяадресу элемента с индексом 0.
1) Указателям можно присваивать значение другого указателя такого же типа.
2) К указателям можно прибавлять и вычитать целые числа (сдвиг указателя).
Если p – указатель на некоторый элемент массива, то выражение p++ или ++p изменяет p так, чтобы он указывал на
следующий элемент массива, а выражение p-- или --p переводит указатель на предыдущий элемент массива. Выражение p
+= i изменяет p так, чтобы он указывал на i - й элемент, после того, на который он указывал ранее.
3) Из одного указателя можно вычесть значение другого указателя, если они ссылаются на элементы одного и того массива.
Если p и q указывают на элементы одного и того же массива и p < q, то
q - p есть число элементов от p до q.
4) Указателям можно присваивать значение, равно нулю, либо сравнивать на равенство с нулём (NULL).
Если значение указателя равно нулю, это трактуется так, что указатель никуда не указывает.
5) К указателям, ссылающимся на элементы одного и того же массива, можно применить операции сравнения (==, !=, <, <=,
>, >=).
Выражение p < q истинно, если p указывает на более ранний элемент массива, чем q.
10.
Утечка памятиПри работе с динамической памятью следует быть внимательным,
чтобы не допустить ситуации, когда память выделяется
динамически, но не освобождается, когда необходимость в ней
отпадает, что приводит к уменьшению доступной свободной
памяти. Это явление называют «утечка памяти».
programming