Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Л13_Указатели_РЕ1_С+р.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
110.59 Кб
Скачать

Лекция 13 указатели

Цель лекции. Уяснить понятия указателя и адресации памяти.

Изучить особенности использования указателей в языке С++.

Основные вопросы лекции.

1. Понятие указателя.

2. Разыменование указателей.

3. Операции с указателями.

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

1. Понятие указателя.

Переменная базового типа или производного типа занимает в памяти определенную область (количество ячеек). Расположение переменной в памяти определяется адресом. При объявлении переменной для нее резервируется место в памяти. Размер зарезервированной памяти зависит от типа данной переменной.

Для доступа к содержимому выделенной памяти служит его имя (идентификатор). Для того чтобы узнать адрес конкретной переменной, служит операция взятия адреса. Синтаксис операции:

&ИмяПеременной

То есть перед именем переменной ставится знак &.

Рассмотрим пример использования указателя.

Int main ()

{

int Var1=4000;

int Var2=300;

cout<<”Znachenie Var1= “<Var1<<endl;

cout<<”Adres Var1= “<&Var1<<endl;

cout<<”Znachenie Var2= “<Var2<<endl;

cout<<”Adres Var2= “<&Var2<<endl;

}

После запуска программы на экране появится следующая информация:

Znachenie Var1= 4000

Adres Var1= 0x0012FF7C

Znachenie Var2= 300

Adres Var2= 0x0012FF78

Адреса переменных записаны в шестнадцатиричной системе счисления. Признаком 16-ричного числа являются символы .

Представление чисел в разных системах исчисления приведено в следующей таблице.

Десятичное число

8–ричное число

16–ричное число

Двоичное число

0

0

0

0

1

1

1

1

2

2

2

10

3

3

3

11

4

4

4

100

5

5

5

101

6

6

6

110

7

7

7

111

8

10

8

1000

9

11

9

1001

10

12

А

1010

11

13

B

1011

12

14

С

1100

13

15

D

1101

14

16

E

1110

15

17

F

1111

В языке С++ принято следующее распределение памяти:

Стек

Свободная память

Раздел глобальных переменных и констант

Программа


Младшие

адреса

Адреса локальных переменных размещаются в стеке. Поэтому их адреса следуют в обратном порядке (стек растет в направлении младших адресов). Разница в адресах Var1 и Var2 всегда будет одинаковая и при 4-х байтовом представлении чисел типа int составит 4 байта.

В языке С++ есть возможность осуществлять непосредственный доступ к памяти. Для этого предусмотрен специальный тип переменных – указатели.

Указатель – это переменная, содержащая адрес некоторого объекта. Объектом может быть: переменная базового или производного типа или функция. В общем случае – это просто целое число!

Переменная Указатель

на переменную

Значение

переменной

.

.

Адрес + 1

Адрес Адрес + 1 Адрес + 2 Адрес + 3 Адрес + 4 Адрес + 5

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

ТипОбъекта *Идентификатор;

Здесь “ТипОбъекта” определяет тип данных, на которые ссылается указатель с именем “Идентификатор”. Символ * (звездочка) означает, что следующая за ней переменная является указателем. При объявлении указателя под него резервируется 4 байта.

Примеры объявления указателей:

Char *ch;