Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Spisok_voprosov (1).docx
Скачиваний:
6
Добавлен:
22.09.2019
Размер:
3.9 Mб
Скачать

77. Указатели (назначение, синтаксис, операции).

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

<тип> *<имя указателя>; пример: char *a; \\ где <тип> это тип переменной на которую ссылается или будет ссылаться указатель.

Над указателями можно выполнять унарные операции: инкремент и декремент. При выполнении операций ++ и -- значение указателя увеличивается или уменьшается на длину типа, на который ссылается используемый указатель.

В бинарных операциях сложения и вычитания могут участвовать указатель и величина типа int. При этом результатом операции будет указатель на исходный тип, а его значение будет на указанное число элементов больше или меньше исходного.

Значения двух указателей на одинаковые типы можно сравнивать в операциях ==, !=, <, <=",">, >= при этом значения указателей рассматриваются просто как целые числа, а результат сравнения равен 0 (ложь) или 1 (истина).

78. Различие между указателями и ссылками.

1.Невозможно ссылаться напрямую на объект ссылочного типа после его определения; каждое упоминание его имени ссылается напрямую на объект, на который он ссылается.

2.В качестве результата первого указания не могут быть выполнены никакие арифметические вычисления, ни приведение типов, ни любые другие операции, кроме копирования их связанных значений в другие ссылки.

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

4.Ссылки не могут быть null (т.е.указывать в никуда), тогда как указатели - могут; каждая ссылка ссылается на некий объект, вне зависимости от его корректности.

5.Ссылки не могут быть неинициализированными. Так как невозможно переинициализировать ссылку, она должна быть инициализирована сразу после создания. В частности, локальные и глобальные переменные должны быть проинициализированы там же, где они определены, а ссылки, которые являются данными-членами сущностей класса, должны быть инициализированы в списке инициализатора конструктора класса.

79. Динамическая память (выделение и освобождение памяти под переменные, одномерные массивы, двумерные массивы).

Выделение памяти – оператор new. Синтаксис:

<тип указателя> *<имя указателя>= new <тип данных>; пример: char*a=new char[10];

Удаление памяти – оператор delete.Синтаксис:

delete <имя указателя>; пример: delete a;

Выделение памяти под одномерный массив. Синтаксис:

<тип данных массива>*<имя массива>= new <тип элементов>[кол-во элементов];

Удаление памяти выделенной для одномерного массива. Синтаксис:

delete []< имя массива> \\ в данном случае имя указателя

Выделение памяти под двумерный массив. Синтаксис:

<тип данных массива>**<имя массива>= new *<тип элементов>[кол-во элементов];

ЦИКЛ ОТ «0» ДО «кол-во строк»

<тип данных массива>*<имя массива>= new <тип элементов>[кол-во элементов];

Удаление памяти выделенной для двумерного массива. Синтаксис:

ЦИКЛ ОТ «0» ДО «кол-во строк»

delete []<имя массива>[индекс элементов]; \\ индекс строк

delete []<имя массива>;

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