Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Инициализация указателей



l Каждый указатель должен быть инициализирован до своего первого упоминания.

l При определении указателя надо стремится выполнить его инициализацию, то есть присвоить первоначальное значение. Инициализатор записывается после имени указателя либо в круглых скобках, либо после равенства.

Вопрос № 9. Операции с указателями (разадресация, взятие адреса, арифметические операции: сложение с константой, разность двух указателей, инкремент, декремент, сравнение указателей; приведение типов).

l Разадресация, или косвенное обращение к объекту (*);

l Присваивание;

l Сложение с константой;

l Вычитание;

l Инкремент (++);

l Декремент (--);

l Сравнение;

l Приведение типов;

l Получение адреса (&).

1. Разадресация указателя (*) предназначена для доступа к величине, адрес которой хранится в указателе.

Результат операции имеет тип совпадающий с типом указателей.

Эту операцию можно использовать как для получения, так и для изменения значения величины (если она не объявлена как константа).

Неопределенный результат:

l указатель является нулевым – NULL;

l указатель определяет адрес не активного объекта;

l указатель определяет адрес, который не приведен до типа объекта на который он указан;

l указатель определяет адрес, не используемый выполняемой программой.

2. Получение адреса (&) – возвращает адрес объекта, стоящий после него.

l
 
 
int a=5;

l int *p, *q;

l p=&a;

l q=&p;

l a=7;

l *p=7;

l *(*q)=7;

Операция применима к величинам, имеющим имя и размещенным в оперативной памяти.

3. Арифметические операции с указателями (сложение с константой, вычитание, инкремент и декремент) автоматически учитывают размер типа величин, адресуемых указателями. Эти операции применимы только к указателям одного типа и имеют смысл в основном при работе со структурами данных, последовательно размещенными в памяти, например, с массивами.

Инкремент (++) перемещает указатель к следующему элементу массива, декремент (--) – к предыдущему. Фактически значение указателя изменяется на величину sizeof(тип). Если указатель на определенный тип увеличивается или уменьшается на константу, его значение изменяется на величину этой константы, умноженной на размер объекта данного типа.

Разность двух указателей – это разность их значений, деленная на размер типа в байтах. Суммирование двух указателей не допускается.

Сравнение указателей >, <, >=, <=, ==,!=

  1. Синтаксис операции явного приведения типа: перед именем переменной в скобках указывается тип, к которому ее требуется преобразовать. При смешивании в выражении указателей разных типов явное преобразование типов требуется для всех указателей, кроме void*.
  2. Присваивание без явного приведения типов допускается в двух случаях:

l указателям типа void*;

l Если тип указателей справа и слева от операции присваивания один и тот же.





Дата публикования: 2015-02-03; Прочитано: 209 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...