пользователей: 21228
предметов: 10455
вопросов: 177496
Конспект-online
зарегистрируйся или войди через vk.com чтобы оставить конспект.
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Указатели и адреса

Указатель - переменная, содержащая адрес области в памяти компьютера. Указатель - переменная, которая содержит адрес области в операционной памяти.Указатель - переменная, хранящая адрес другого объекта.

пример: 

int *PAge = NULL;

Этой строкой переменная PAge объявляется указателем типа int. В результате будет получена переменная PAge, предназначенная для храниения адреса значения типа int.

PAge -обычная переменная. При объявления перменной целочисленного типа ( нпример,int) указывается, что она будет хранить целое число. Когда перменная объявляется указателем на какой-либо тип, это значит, что она будет хранить адрес переменной определенного типа ( в данном случае - типа int ).

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

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

Чаще всего указатели применяются в :

  1. манипулирование данными в динамической распределяемой памяти;
  2. доступ к переменным-членам и функциям класса;
  3. передача данных между функциями по ссылке;

 

29)Указатели и адреса.

Указатель (pointer) – переменная, содержащая адрес другой переменной.
тип  *<имя переменной-указателя>
С помощью указателя осуществляется косвенная адресация  (indirection).
Назначение указателей

  • Для размещения данных в свободных областях памяти (heap) и доступа к ним.
  • Для доступа к переменным и функциям классов.
  • Для передачи параметров в функции по ссылке.

С указателями используются следующие операции:

  • & - взятие адреса переменной;
  • * - разыменование указателя, т.е. получение доступа к объекту;
  • -> - разыменование члена структуры;
  • [] - индексация, доступ к элементу массива, при этом считается, что указатель содержит адрес 0 элемента.

Операция индексации может быть реализована с помощью адресной арифметики, где применяются операции ++,--, и +, -.  Можно создавать указатели на любые типы за исключением ссылок и битовых полей. Указатель может указывать не только на данные, но и на область кода, т.е. на функцию.

 

 

Указатель — это переменная, содержащая адрес некоторого элемента данных (переменной, константы, функции, структуры). В языке C указатели тесно связаны с обработкой массивов и строк.

Для объявления переменной как указателя используется оператор *:
Определение адреса.

Физический адрес любой переменной можно узнать при помощи стандартной функции addr(<имя_переменной>):<указатель> или унарной операции @<имя_переменной>.
В зависимости от значения директивы компилятора {$T}, результатом операции @ будет либо типизированный указатель , тип которого будет определен в соответствии с типом использованной переменной, либо не типизированный указатель pointer .
Разыменование
Для того чтобы воспользоваться значением, хранящимся по некоторому адресу, необходимо его оттуда "извлечь". Унарная операция ^ называется разыменованием и записывается по следующему шаблону: <имя_указателя>^
Результатом операции ^ является значение, хранящееся по указанному адресу. Тип этого значения будет определяться типом ( типизированного ) указателя. К не типизированным указателям операцию разыменования применять нельзя.
Для присвоения адреса некоторой переменной указателю используется опера­тор &, например:

char *p;                       // объявляем указатель (способен содержать адрес хранения любого символа);

char c = 'А';     // объявляем символьную переменную с;

р = &c;                       // теперь p содержит адрес хранения символа c.

 

Для того чтобы извлечь значение переменной, на которую указывает указа­тель, используется оператор разыменования *.

char *p;

char b; char c = 'А';

р = &c;.

b = *р;            // теперь b равняется не адресу хранения переменной c, а значению переменной c, то есть 'А'.

 

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

char *p;

char b, char c = 'А';

р = &b;           // теперь p содержит адрес хранения ещё не инициализированной переменной b;

*р = b;            // инициализируем переменную b значением 'А'.


28.12.2014; 22:45
хиты: 156
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2016. All Rights Reserved. помощь