Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_Лаб_Гриф.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
2.81 Mб
Скачать

Хід роботи

  1. Вивчити теоретичні відомості.

  2. Відповідно до індивідуального завдання розробити алгоритм рішення задачі. Оголосити комбіновані типи, масиви структур, покажчики на типи структур. Використовувати покажчики як дані-члени структури, а також для доступу до членів структури і роботи з ними. Оголосити об'єднання і виконати роботу з об'єднанням з використанням покажчиків. Результати ініціалізації, зміни даних-членів комбінованих типів вивести на екран.

  3. Розробити і набрати програму на комп'ютері, усунути помилки.

  4. Одержати результат.

  5. Оформити звіт.

  6. Підготуватися до захисту роботи, вивчивши контрольні питання по даній темі.

Індивідуальне завдання до заняття №15 узяти з роботи №3.

Вимоги до змісту звіту приведені в занятті №1.

Питання для контролю і самостійної роботи

  1. Чи можна використовувати покажчики як дані-члени структур ?

  2. Чи можна використовувати масиви і структури як дані-члени структур (вкладені оголошення) ?

  3. Чи можна використовувати в якості вкладених структури того ж типу, що оголошуються (свого типу), а також покажчики на структури свого типу ?

  4. Як оголосити покажчик на структуру, масив покажчиків на структури ? Чи існують різні варіанти оголошення ?

  5. Чи можна використовувати typedef для оголошення типу структури ?

  6. Як одержати доступ до елемента структури за допомогою покажчика ?

  7. Як здійснюється доступ до даних-членів структури при використанні масиву покажчиків на структури ?

  8. Чи можна використовувати різні класи пам'яті стосовно до перемінних структурного типу ?

  9. Чи обов'язково вказувати ключове слово struct при оголошенні структурного типу, перемінних структурного типу ?

  10. Чи можна зберігати адресу структури в самій структурі ?

  11. З допомогою якого оператора можна виділити пам’ять у “купі” ?

  12. Як звільнити виділену у “купі” пам’ять ?

Заняття № 16

Використання покажчиків для роботи з функціями

(2 години)

Ціль роботи: виробити практичні навички в написанні програм з функціями й у використанні покажчиків для роботи з функціями.

Теоретичні відомості

Покажчики як параметри функції

Покажчики широко використовуються при передачі аргументів у функцію і з функції, створюючи двосторонній потік даних між функцію, що викликається і функціями, які її викликають.

Для передачі аргументів у функцію використовують:

  1. Покажчики на прості типи даних, як параметри функції.

  2. Покажчики на масиви (передавати масиви за значенням не можна).

  3. Покажчики на тип enum як параметри функції.

  4. Покажчики на структури й об'єднання як параметри функції.

  5. Покажчики на функції (передавати функції за значенням не можна).

С дозволяє використовувати покажчики на базові типи, на масиви і структури, а також покажчики на функції, як параметри, що передаються у функції і повертаються з функцій. Загальний синтаксис для оголошення покажчика на базові типи, на масиви і структури як параметри функції

[Const ] Тип * Ім'я_покажчика

При оголошенні функції ім'я покажчика як формального параметра може не вказуватися аналогічно іншим видам формальних параметрів.

Ключове слово const охороняє дані структури від зміни у функції, тоді як відсутність ключового слова const дозволяє функції змінювати значення даних-членів структури, тому що при використанні покажчиків у тілі функції відомі фізичні адреси цих перемінних.

Приклад використання покажчиків на різні типи даних як параметри функції

struct Муst //Оголошення структурного типу Муst

{

//Дані-члени структури

};

int func( float *, int * ); //Передача покажчиків на тип float і на тип int

void loadMy(Myst *pm); //Передача у функцію покажчика на

//структурний тип Муst

float *pf; int *pl; Myst *pmy; //Оголошення перемінних

int a = func(pf, pl); //Виклик функції func( )

loadMy( pmy ); //Виклик функції loadMy( )

C дозволяє створювати і використовувати покажчики на функції. У такому покажчику зберігається адреса функції. Покажчик на функцію можна використовувати для її виклику. Оголошення покажчика на функцію аналогічно оголошенню функцій, з якими він буде використовуватися. Загальний синтаксис для оголошення покажчика на функцію:

Тип_ що_повертається ( * Ім'я_покажчика_на_функцію) (Список_оголошень_типів_параметрів)

При ініціалізації покажчика на функцію потрібно використовувати ім'я функції, у якої тип значення, що повертається, і список типів параметрів відповідають оголошенню покажчика. Ім'я функції має тип покажчика на функцію з заданими для неї в оголошенні типами параметрів і типом значення, що повертається.

Ініціалізація покажчика на функцію

Ім'я_покажчика_на_функцію = Ім'я_функції

Загальний синтаксис для виклику функції з використанням покажчика

(*Ім'я_покажчика)(Список_фактичних_параметрів)

Приклад

void (* pfunc) (int, int); //Оголошення покажчика на функцію

Оголошено покажчик pfunc на функцію, що вимагає два параметри типу int і не повертає значення (void). Типи і кількість параметрів, а також тип значення, що повертається для функцій, які можна адресувати цим покажчиком, повинні збігатися. Для використання покажчика оголосимо функцію, привласнимо покажчику адресу функції і здійснимо її виклик за його допомогою

Приклад

void fun1(int, int); //Оголошення функції fun1( )

int linesch (char *); //Оголошення функції linesch ( )

int (*search)(char *); //Оголошення покажчика на функцію

void main( )

{ int a;

char *pstr = “Hello World!”; //Оголошення покажчика pstr на тип char

search = linech; //Привласнювання покажчику адреси функції linech( )

pfunc = fun1; //Привласнювання покажчику адреси функції fun1( )

//search = fun1; pfunc = linech; - недопустимі вирази

… //інші оператори

a = (* search)(pstr); //Виклик функції linech ( ) за допомогою покажчика

(*pfunc)(2, 4); //Виклик функції fun1( ) за допомогою покажчика

}