Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_po_lektsiam_6_9.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
351.23 Кб
Скачать

Операции над указателями

Для указателей-переменных разрешены операции:

  • доступа по указателю * (разыменования или косвенного обращения к объекту),

  • получения адреса (&),

  • присваивания,

  • приведения типов,

  • сложения с константой и вычитания константы,

  • вычитания двух указателей,

  • инкремента или декремента,

  • сравнения указателей (одного типа).

  1. Можно ли определить указатель на указатель на заданный тип? Если да, то дайте объяснение, что это за объект (л.9) .

  1. Результат выполнения операторов (л.9):

int *p=new int;

int *q=p;

delete p;

p=NULL;

  1. Что выполняют следующие операторы? (л.9)

int *p=new int;

if (p=NULL) ….;

  1. Указать правильные объявления указателей р и рр (л.9):

char *p, pp=NULL;

char *pp;

char *p=new char;

char *pp=p;

  1. Особенности выполнения операций +  - и ++  -- для указателей (л.9) .

Операции инкремента и декремента

!!! Помним об особенностях префиксных операций инкремента и декремента: они lvalue, поэтому выражения вида ++p =…; являются верными. В то же время, выражения вида p++ =…;  где р – указатель, дадут ошибку компиляции, т.к. постфиксные операции инкремента и декремента не есть lvalue.

  1. Укажите особенности использования указателей типа void * (л.9) .

Указатель void* (на объект типа void) является особым типом указателя. Ключевое слово void говорит об отсутствии данных о размере объекта в памяти. Указателю void* можно присвоить значение указателя любого типа, а также сравнивать его с любыми указателями. Так как компилятору (для корректной интерпретации ссылки на память через указатель) нужна информация о числе байтов, участвующих в операции, необходимо во всех случаях, при использовании указателя void*, явным образом приводить тип указателя (преобразовывать указатель) к требуемому типу.

Для доступа к объекту через указатели в С++ определена операция *(операция разыменования, т.е. обращения к содержимому участка памяти, адрес которого хранится в указателе). Чтобы операция разыменования выполнялась правильно, указатель должен иметь некоторое значение, получить которое он может в результате инициализации или присваивания.

  1. Составить описание типа(л.9):

функция, невозвращающая значения, с параметрами типа

   указатель на символ и ссылка на целое;

указатель на функцию, невозвращающую значения, с параметрами типа

   указатель на символ и ссылка на целое;

  

функция с параметром, имеющим тип

  указателя на функцию, невозвращающую значения, с параметрами типа

   указатель на символ и ссылка на целое;

 

функция без параметров, возвращающая

  указатель на функцию, невозвращающую значения, с параметрами типа

   указатель на символ и ссылка на целое;

  1. Запишите   прототип функции, у которой параметр и возвращаемое значение имеют тип указателя на функцию с параметрами типа указатель на символ и ссылка на целое и невозвращающую значения. (л.9)

  1. Проинтерпретируйте выражение int *(*pp[15])(). (л.9)

  1. Проинтерпретируйте выражение int *(*pp[15])(int *).(л.9)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]