
- •Міністерство освіти і науки україни
- •«Програмування»
- •Чернігів чдту 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.1.5Нетипізовані вказівники
У мові С можна використовувати покажчики, які не пов’язані з якимось конкретним типом і сумісні покажчиками на будь які типи даних. Використання безтипових дозволяє підвищувати ефективність створюваних програм. Без типові покажчики оголошуються із ключовим словом void:
void *pz;
Хоча значення без типових покажчиків можна прямо присвоювати вказівникам на будь які типи даних, усе ж доцільно у таких присвоєннях використовувати явне приведення типу, бо це підвищує надійність програм.
Розглянемо приклад, який дозволяє отримати доступ до двох половин числа типу long (long удвічі більший за int).
ulong number = 0x12AB34DC;
uint part1, part2;
void *p= &number;
part1=*(uint*)p;
part2=*((uint*)p+1)
У цьому прикладі ми розрізали число number типу long на числа part1та part2 типу int.
Завдання для самостійної роботи
В лабораторній роботі слід створити проект, передбачає реалізацію таких функцій у проекті:
виведення на консоль у вигляді таблиці значень чисел у десятковому та шістнадцятковому форматі, та їх адрес у оперативній пам’яті для типів int, long, float, double, char, bool;
представити ті самі числа у вигляді окремих байтів та вивести їх на консоль;
виконати без комп’ютера, а потім перевірити результат за допомогою комп’ютера приклад із підручника [4], стр.120:
//Дано:
int mvr[100];
int *pm = mvr;
int a, *px = pm;
//Треба знайти результат кожного з наступних операторів:
pm++;
a = *pm++;
a = (*pm)++;
a = *++pm;
a = ++*pm;
*px++ = *pm++;
виконати без комп’ютера, а потім перевірити результат за допомогою комп’ютера приклад 3 із підручника [4], стр.124:
//Яким буде х після виконання даної програми:
int x, *vk;
vk=&x; x=5;
*vk = x * 5;
x+=*vk;
виконати без комп’ютера, а потім перевірити результат за допомогою комп’ютера приклад 8 із підручника [4], стр.124:
//Яким буде n після виконання даної програми:
double *px;
double * const py = (double*)200;
int n = 0;
px = py +50;
px += 10;
px = px >= (double*) 600 ? px – 10 : NULL ;
if (px !=NULL)
n = px - py;
Вимоги до звіту
Назва роботи.
Мета роботи.
Короткий опис основних понять, пов’язаних з покажчиками.
Тексти виконаних завдань з проміжними та конечними результатами.
Результати тестування проекту у вигляді копій консолі.
Висновки.
Контрольні питання
Визначення поняття покажчик.
Оголошення та ініціалізація покажчиків.
Звернення до даних через покажчики.
Використання кваліфікатора const для покажчиків.
Адресна арифметика.
Нетипізовані вказівники.
Протестувати програму обробки покажчиків наданої викладачем.
Рекомендована література
Берн Страуструп. Язык программированя С++. Второе дополненное издание. – М: Бином-Пресс, 2008. – 369 с
Прата Стивен. Язык программирования С++. Лекции и упражнения. Учебник: Пер. с англ./Стивен Прата – СПб.:ООО «ДиаСофтЮП», 2003. –1104 с.
Шилдт Герберт. Полный справ очник по С++. Пер. с англ. – М: Вильямс, 2004. 783 с.
Шпак З.Я. Програмування мовою С. – Львів: Оріяна-Нова, 2012. – 432с.