
- •Програмування і алгоритмічні мови Конспект лекцій
- •Луцьк 2004
- •Лекція 1 Основи мови с. Оператори введення та виводу.
- •Імена змінних та типи і розміри даних. Арифметичні та логічні оператори. Оператори присвоєння.
- •Лекція 3 Масиви. Масиви літер.
- •Умовні оператори. Інкриментні та декрементні оператори.
- •Цикл For
- •Лекція 6 Цикли While, Do-while.
- •Препроцесор. Рекурсія.
- •Структури. Масив структур.
- •Основні відомості про функції.
- •Змінні і правила дії областей у функціях
- •Головні файли.
- •Масиви в якості аргументів функції.
- •Структури в якості аргументів функції
- •Вказівники і адреси
- •Масиви вказівників
- •Вказівники на структуру
- •Лекція 17 Використання вказівників у якості аргументів функцій
- •Лекція 18 Доступ до файлів
- •Методичне видання
- •“Автоматизоване управління технологічними процесами”
- •Тир.50 прим. Зам.1516
- •43018, М.Луцьк, вул. Львівська, 75
Вказівники і адреси
Вказівник - це адреса пам'яті, що розподіляється для розміщення ідентифікатора (як ідентифікатор може виступати ім'я змінної, масиву, структури, рядкового літералу). У тому випадку, якщо змінна оголошена як вказівник, то вона містить адресу пам'яті, по якому може знаходиться скалярна величина будь-якого типу. При оголошенні змінної типу вказівник, необхідно визначити тип об'єкта даних, адреса яких буде містити змінна, і ім'я вказівника з попередньою зірочкою (чи групою зірочок). Формат оголошення вказівника:
специфікатора-типу [ модифікатор ] * описувач.
Специфікатор-типу задає тип об'єкта і може бути будь-якого основного типу, типу структури. Задаючи замість специфікатора-типу ключове слово void, можна своєрідним чином відстрочити специфікацію типу, на який посилається вказівник. Змінна, що повідомляється як вказівник на тип void, може бути використана для посилання на об'єкт будь-якого типу. Однак для того, щоб можна було виконати арифметичні і логічні операції над вказівниками чи над об'єктами, на які вони вказують, необхідно при виконанні кожної операції явно визначити тип об'єктів. Такі визначення типів можуть бути виконані за допомогою операції приведення типів.
Як модифікатори при оголошенні вказівника можуть виступати ключові слова const, near, far, huge. Ключове слово const вказує, що вказівник не може бути змінений у програмі. Розмір змінної оголошеної як вказівник, залежить від архітектури комп'ютера і від використовуваної моделі пам'яті, для якої буде компілюватися програма. Вказівники на різні типи даних не обов'язково повинні мати однакову довжину.
Для модифікації розміру вказівника можна використовувати ключові слова near, far, huge.
Приклади:
unsigned int * a; /* змінна а являє собою вказівник
на тип unsigned int (цілі числа без знака) */
double * x; /* змінна х вказує на тип даних з
крапкою подвійної точності, що плаває, */
char * fuffer ; /* з'являється вказівник з ім'ям fuffer
який вказує на змінну типу char */
double nomer;
void *addres;
addres = & nomer;
(double *)addres ++;
/* Змінна addres оголошена як вказівник на об'єкт будь-якого типу. Тому їй можна привласнити адресу будь-якого об'єкта (& - операція обчислення адреси). Однак, як було відзначено вище, жодна арифметична операція не може бути виконана над вказівником, поки не буде явно визначений тип даних, на які він вказує. Це можна зробити, використовуючи операцію приведення типу (double *) для перетворення addres до вказівника на тип double, а потім збільшення адреси. */
const * dr;
/* Змінна dr оголошена як вказівник на константний вираз, тобто значення вказівника може змінюватися в процесі виконання програми, а величина, на яку він вказує, немає. */
unsigned char * const w = &obj.
/* Змінна w оголошена як константний вказівник на дані типу char unsigned. Це означає, що на протязі усієї програми w буде вказувати на ту саму область пам'яті. Зміст цієї області може бути змінено. */
Лекція 15