Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Int main ()






Лекция 13

УКАЗАТЕЛИ

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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–ричное число Двоичное число
       
       
       
       
       
       
       
       
       
       
    А  
    B  
    С  
    D  
    E  
    F  

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

 

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

Младшие

адреса

 

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

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

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

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

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

  Значение переменной . . Адрес + 1  

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

 

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

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

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

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

Char *ch;

int *temp, i, *z;

float f, *ptr;

Здесь объявлены указатели ch, temp, z, ptr и переменные i и f.

Поскольку указатель является ссылкой на некоторую область памяти, ему может быть присвоен только адрес переменной, а не ее значение.

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

#include < iostream.h>






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.