Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Int main ()Стр 1 из 2Следующая ⇒
Лекция 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-ричного числа являются символы 0х. Представление чисел в разных системах исчисления приведено в следующей таблице.
В языке С++ принято следующее распределение памяти:
Младшие адреса
Адреса локальных переменных размещаются в стеке. Поэтому их адреса следуют в обратном порядке (стек растет в направлении младших адресов). Разница в адресах Var1 и Var2 всегда будет одинаковая и при 4-х байтовом представлении чисел типа int составит 4 байта. В языке С++ есть возможность осуществлять непосредственный доступ к памяти. Для этого предусмотрен специальный тип переменных – указатели. Указатель – это переменная, содержащая адрес некоторого объекта. Объектом может быть: переменная базового или производного типа или функция. В общем случае – это просто целое число! Переменная Указатель на переменную
Адрес Адрес + 1 Адрес + 2 Адрес + 3 Адрес + 4 Адрес + 5
Если переменная будет указателем, то она должна быть объявлена в программе. Указатель в программе объявляется следующим образом: ТипОбъекта *Идентификатор; Здесь “ ТипОбъекта ” определяет тип данных, на которые ссылается указатель с именем “ Идентификатор ”. Символ * (звездочка) означает, что следующая за ней переменная является указателем. При объявлении указателя под него резервируется 4 байта. Примеры объявления указателей: Char *ch; int *temp, i, *z; float f, *ptr; Здесь объявлены указатели ch, temp, z, ptr и переменные i и f. Поскольку указатель является ссылкой на некоторую область памяти, ему может быть присвоен только адрес переменной, а не ее значение. Рассмотрим пример объявления и инициализации указателя. #include < iostream.h>
|