- •Міністерство освіти і науки україни
- •«Програмування»
- •Чернігів чдту 2013
- •Лабораторна робота № 11. Основи роботи з покажчиками
- •Короткі теоретичні відомості
- •11.1.1Оголошення та ініціалізація покажчиків
- •11.1.2Звернення до даних через покажчики
- •11.1.3Використання кваліфікатора const для покажчиків
- •11.1.4Адресна арифметика
- •11.1.5Нетипізовані вказівники
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 12. Використання покажчиків для обробки масивів
- •Короткі теоретичні відомості
- •11.1.6Приклад формування одновимірного масиву з використанням покажчиків
- •11.1.7Робота з масивами символів через покажчики
- •11.1.8Стандартні функції для роботи з рядками символів
- •11.1.9Масиви покажчиків на рядки символів
- •11.1.10Покажчики на структури Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 13. Використання покажчиків на функції
- •Короткі теоретичні відомості
- •11.1.11Оголошення та ініціалізація матриць
- •11.1.12Матриці як параметри функцій
- •11.1.13Формування та виведення матриць з використанням консолі
- •11.1.14Тотальна обробка даних у матрицях
- •11.1.15Вибіркова обробка матриць
- •11.1.16Перестановки елементів матриці
- •11.1.17Видалення та вставка елементів матриці
- •11.1.18Сортування елементів матриці
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 14. Робота з файлами
- •Короткі теоретичні відомості
- •11.1.19Оголошення шаблону та ініціалізація структур
- •11.1.20Массиви структур
- •11.1.21Введення-виведення структур
- •11.1.22Сортування масивів структур
- •Створення проекту «Результати атестації»
- •11.1.23Інтерфейс користувача для проекту
- •11.1.24Визначення глобальних типів даних програми
- •11.1.25Функція обробки номеру вибраного варіанту
- •11.1.26Функція відображення масиву на консолі
- •11.1.27Додавання нових даних до масиву структур строки в таблицу
- •11.1.28Функція сортування масиву за групою та прізвищем
- •11.1.29Сортування за кількість незадовільних оцінок та середньому балу
- •11.1.30Вибірка студенті, що мають середній бал вище 4
- •11.1.31Підрахунок кількості студентів що мають більше 2-х незадовільних оцінок
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
Лабораторна робота № 11. Основи роботи з покажчиками
Мета роботи:
Ознайомитися з поняттям покажчик.
Навчитися оголошувати та ініціалізувати покажчики.
Ознайомитися з особливостями масивів символів.
Навчитися оперувати масивами, як параметрами функцій.
Познайомитися з операціями над масивами.
Створити програму для обробки масивів.
Короткі теоретичні відомості
Покажчик або вказівник – це особливий тип даних, значенням якого є адреса певного байту оперативної пам’яті. Цей тип даних найчастіше використовується у системному програмуванні, але і прикладні програмісти успішно використовують цей інструмент. Слід сказати, що не усі мови програмування надають можливість використовувати покажчики, але у таких популярних мовах програмування як С та Паскаль робота з покажчиками можлива. Більш того, можна сказати, що покажчики – це візитна картка мови С.
Вважається, що використання покажчиків дає змогу скоротити текст програми та підвищити її ефективність. Але тут є і зворотна сторона. Покажчики – це не зовсім простий у використанні засіб програмування і часто стають джерелом помилок, виявити які у програмі дуже складно. Тому у деяких мовах прикладного програмування (наприклад, Java) принципово відмовилися від покажчиків.
11.1.1Оголошення та ініціалізація покажчиків
Оголошення вказівника має вигляд, представлений на рисунку 11.1.
Рисунок 11.1 – Синтаксис оголошення покажчика
У цьому оголошенні тип даних визначає тип елементу програми, адресу якого може зберігати даний покажчик. Це може бути будь який допустимий у мові тип, простий або складений
Ім’я покажчика – це ідентифікатор написаний за правилами запису імен у мові С.
* – це ознака того, що наступне ім’я є покажчиком.
Приклад оголошення покажчика з ім'ям px, на дані типу int наведено нижче:
int *px ;
Слід мати на увазі, що символ * відноситься не до типу, а до імені покажчика, тому в разі оголошення декількох покажчиків символ * треба ставити перед кожним іменем. Нижче наведено приклад оголошення двох покажчиків pw, pz одночасно із оголошенням простої змінної pv:
int *pw, *pz, pv ;
Під час оголошення покажчика його можна ініціалізувати константою цілого типу, але цю константу слід явно привести до типу покажчика. У прикладі наведеному нижче покажчику pd на дані типу double присвоюється значення 1024 (нагадаємо, що значення покажчика – це адреса даних):
double *pd = (double*)1024;
Зверніть увагу, у конструкції, що використовується для приведення до типу покажчика символ * відноситься вже до назви типу даних.
Покажчик можна проініціалізувати і адресою деякої, вже оголошеної змінної. Для отримання адреси змінної використовується операція визначення адреси - &. Нижче наведено приклад такої ініціалізації:
double z, *pz = &z;
У цьому прикладі оголошені проста змінна z, і покажчик pz, який проініціалізований адресою змінної z. Таким чином вказівник pz містить адресу змінної z.
Якщо покажчик не проініціалізовано, то його значенням буде «сміття», тобто будь яка адреса. Для того, щоб не мати справи із «сміттям», у тих випадках, коли невідомо, як ініціалізувати покажчик, йому присвоюють значення NULL. Вважається, що покажчик, значенням якого є NULL, ні на що не посилається і його називають порожнім покажчиком. Нижче наведено приклад такої ініціалізації:
int *pw = NULL ;
