- •1)Указатели.
- •3) Инициализация указателей
- •4) Понятие класса. Описание класса (Паскаль). Поля и методы. Пример
- •5) Операции с указателями
- •7) Массивы. Описание одномерных и многомерных массивов, инициализация.
- •8) Описание объектов (экземпляров класса) Способы обращения к полям объекта. (Паскаль).
- •9) Ввод и вывод массивов, два способа: с выбором элемента по индексу и с выбором элемента по указателю.
- •11) Типы данных, определяемые пользователем: перечисления.
- •12) Константный указатель на вызвавший метод объект (self ) (Паскаль).
- •13) Типы данных, определяемые пользователем: структуры.
- •15)Типы данных, определяемые пользователем: объединения.
- •16) Конструктор и деструктор, их свойства (Паскаль).
- •17) Функции. Объявление и определение, заголовочные файлы в с и предописания (forward) в Паскале.
- •19) . Способы обмена данными: с помощью глобальных переменных.
- •21) Способы обмена данными: Возвращаемое значение.
- •23) Способы обмена данными: Параметры функции.
- •24) Виртуальные методы и абстрактные классы.
- •25) Передача параметров по значению и по адресу.
- •30) Delphi nenado
- •31) Перегрузка функций.
- •40) Код проекта. Nenado
3) Инициализация указателей
Указатели чаще всего используют при работе с динамической памятью. Доступ к выделенным участкам динамической памяти, называемым динамическими переменными, производится только через указатели. Время жизни динамических переменных - от точки создания до конца программы или до явного освобождения памяти. В С ++ используется два способа работы с динамической памятью. Первый использует семейство функций malloc и достался в наследство от С, второй использует операции new и delete. Существуют следующие способы инициализации указателя:
1. Присваивание указателю адреса существующего объекта:
с помощью операции получения адреса:
int* p = &a; // в указатель записывается адрес a
int* r = p;
int b[10]; // массив
int* t = b; // присваивание имени массива
void (*pf)(int); // указатель на функцию
pf = f; // присваивание имени функции
2. Присваивание указателю адреса области памяти в явном виде:
char* vp = (char *)0xB8000000; // шестнадцатеричная константа
3. Присваивание пустого значения:
int* suxx = NULL; // не рекомендуется
int* rulez = 0; // так - лучше
4. Выделение участка динамической памяти и присваивание ее адреса указателю:
с помощью операции new
int* q = new int [10];
Освобождение памяти, выделенной с помощью операции new, должно выполняться с помощью delete, а памяти.
4) Понятие класса. Описание класса (Паскаль). Поля и методы. Пример
Класс – это структура языка, включающая, помимо описания данных, описание процедур и функций, которые могут быть выполнены над представителем класса – объектом.
Переменные в зависимости от предназначения именуются полями или свойствами. Процедуры и функции класса – методами. Соответствующий классу тип называется объектным типом.
Пример объявления простого класса:
type
TPerson = class (TObject)
private
fname: string[15]; faddress: string[35];
public
procedure Show;
end;
TPerson – это имя класса, fname и faddress – имена полей, show – имя метода.
Согласно принятому в Delphi соглашению, имена полей должны начинаться с буквы f (от слова field – поле).
Классы могут быть объявлены в секции интерфейса (interface) или в секции реализации (implementation) модуля. Определение классов внутри подпрограмм и других блоков не допускается.
Объект– это конкретный экземпляр, созданный в соответствии с его объявлением с помощью класса. Переменная типа класс – это переменная объектного типа и называется экземпляром класса или объектом. Объекты как представители класса объявляются в программе в разделе var, например:
Var student: TPerson; professor: TPerson;
Поля
Поля – это данные, уникальные для каждого экземпляра класса. Они предназначены для хранения данных во время работы экземпляра класса (объекта). Поле объявляется как обычная переменная и может быть любого типа. В описании класса поля должны предшествовать методам и свойствам.
Методы
Метод – это подпрограмма (процедура или функция), которая определена как элемент класса. Описание метода аналогично описанию обычной подпрограммы модуля. Внутри одного класса можно объявить столько методов, сколько надо.