Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по C/C++

  Все выпуски  

Уроки по C/C++


Информационный Канал Subscribe.Ru

C/C++. Уроки с сайта http://progs.biz

Рассылка №10

C/C++. Урок 14. Адрес переменной.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 14. Адрес переменной.

К. Грегори. Использование Visual C++ 6. Специальное издание

Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Новости сайта progs.biz
Краткое описание всех новых уроков и материалов на сайте progs.biz. Основные направления - языки программирования (Visual C++, Visual Basic.NET, C#, Delphi, Java), WEB-дизайн (HTML, PHP, PhotoShop, SSI), базы данных, обзоры книг по программированию и новых программ.

C/C++. Урок 14. Адрес переменной

Операционная система Windows выделяет каждой программе 4 Гб адресного пространства. В реальности, конечно, такой оперативной памяти нет (хотя кто знает, что будет через пару-тройку лет ;)), но каждая программа искренне думает, что у нее есть столько места.

Каждый байт адресного пространства имеет свой адрес. Адрес - это просто некоторое число. В Windows адрес выглядит приблизительно так: 0x0D56FF23. Тут префикс 0x означает что это число в шестнадцатеричном виде. Цифры шестнадцатеричного числа - это обычные числа от 0 до 9 и буквы A, B, C, D, E, F. Обратите внимание, что в адресе 8 знаков (так и должно быть, так как у каждой программы 4 Гб адресного пространства).

Рассмотрим подробнее, что происходит, когда вы пишете в вашей программе что-то вроде

int z;

В этом случае в адресном пространстве вашей программы несколько байт (а именно столько, сколько надо на хранение одного целого - скорей всего это будет 4 байта) получают имя z. И это очень удобно - запись в эти ячейки идет не по их адресу (который выглядит как-то вроде 0x00FD240A) а по удобному имени z. Эти байты выделяются в определенном месте адресного пространства. Адрес первого байта нашего числа z будет начальным адресом все переменной z.

Адрес можно получить непосредственно. Для этого служит оператор взятия адреса & (называется амперсанд). Вот пример:

int z;
cout<<&z; //Выводим на экран адрес переменной z.

Указаный фрагмент выведет что-то вроде 0x0012FF7C.

Вот еще пример:

int z[3]; //Массив
cout<<z; //Адрес начального элемента массива.

Тут выведется адрес начала массива (т. е. адрес его нулевого элемента). Таким образом имя массива - это адрес его начала.

Наверх

Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное