Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Объявление указателей и работа с адресами




Указатели

Указатель – это производный тип данных, позволяющий обращаться к адресам в памяти компьютера. Если переменная объявлена как указатель, она может хра­нить адрес и таким образом указывать на расположенное по этому адресу значение.

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

int * iptr;

объявляет переменную iptr как указатель на значение целого типа. Это означает, что значение переменной iptr будет рассматриваться как адрес, по которому расположено значение типа int.

Получение адресов переменных программы обеспечивает специальная операция &.

Предположим, что в программе объявлена переменная i типа int:

int i;

Тогда ранее объявленной переменной-указателю iptr можно присвоить адрес переменной i:

iptr = &i;

После выполнения этого оператора переменная iptr будет хранить адрес переменной i.

Обратиться к значению переменной i теперь можно не только по ее имени, но и по ее адресу. Для доступа к значению переменной по ее адресу применяется специальная унарная опе­рация *. Её операндом является обозначение адреса некоторой величины, а результатом – расположенное по данному адресу значение.

Таким образом, следующие два оператора эквивалентны (iptr – всё та же переменная-указатель, y – переменная типа int):

y = i; // присваивание переменной y значения переменной i

y = *iptr; // присваивание переменной y значения, находящегося по адресу,

// который хранится в iptr, т.е. значения переменной i

С помощью операции обращения по адресу можно не только получать, но и присваивать значения:

*iptr = 10; // запись числового значения 10 по адресу, хранящемуся в iptr

После выполнения этого оператора значение переменной i, на которую указывает указатель iptr, станет равным 10.

Указатель – это не просто адрес, а адрес величины определенного типа. Так, рассматриваемый нами указатель iptr – адрес величины типа int. Можно объявить указатели на значения и других типов, например:

unsigned short* uptr; // указатель на короткое целое число без знака

char* ср; // указатель на символ

Каждое из этих объявлений выделяет память для переменной-указателя, но каждый из этих указателей пока ни на что не указывает. До тех пор, пока указателю не будет присвоен како­й-либо осмысленный адрес, его нельзя использовать в программе.

Размер переменной, объявленной как указатель, должен быть достаточным для хранения адресов и в общем случае зависит от аппаратно-операционной платформы компьютера. Так, для современных компьютерных 32-битовых платформ размер указателя 4 байта.

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




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 225; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.