Вказівники Вказівник (або покажчик) – особливий тип даних, значенням якого є адреса певного байта оперативної памяті. Значення покажчика - це беззнакове.

Презентация:



Advertisements
Похожие презентации
Вказівники, масиви. Структури Проф. Куссуль Н.М..
Advertisements

Вказівники на функції В мові С імя функції є константним вказівником на перший байт виконавчого коду функції. Це адреса оперативної памяті, яка відповідає.
Класи пам'яті даних. Клас пам'яті, час існування та видимість об'єкта Кожен обєкт програми (змінна, функція,...) має свій тип і клас памяті. Тип визначає.
Типи даних мови Visual Basic та їх опис. Опис величин Величина - це об'єкт, який має стале або змінне значення. Основні характеристики величин: ім'я,
Запити в Access Запити в базі даних Запити використовуються для перегляду, зміни й аналізу даних різними способами. Основні операції з використанням.
Робота з даними в динамічній пам'яті На відміну від звичайного розподілу пам'яті, де вона розподіляється під час компіляції ( наприклад int a[10], де виділяється.
Основи алгоритмізації та програмування Надання значень величинам. Вказівки присвоєння та введення.
* Тема: Величини (змінні і константи), їхні властивості. Прості типи величин: числовий, логічний, символьний, рядковий.
Опрацювання структур у функціях Оскільки мова С інтерпретує структури як звичайні змінні, а не вказівники, можна передавати значення структури у функцію.
Оператори. Введення і виведення даних. Оператор присвоювання Оператори це команди програми. Оператор присвоювання є основним оператором мови програмування.
Вказівники і масиви в мові С++. План. 1.Загальні відомості про вказівники. 2.Операції над вказівниками. 3.Вказівники і масиви. 4.Масив як параметр функції.
Вирази та операції Вираз – послідовність операндів, обєднаних знаками операцій та круглими дужками. Операнди – обєкти, над якими виконуються операції;
Урок 6 5 клас. Файли, папки та операції над ними.
Операції над обєктами файлової системи. Мета: 1. Де відкриваються об'єкти операційної системи Windows? 2. Що таке вікно? 3. Які кнопки керування вікнами.
Основи алгоритмізації та програмування Табличні величини. Опис табличних величин мовою Паскаль.
Програми з розгалуженнями.Команда IF Підготувала Крилік Анастасія 7-Д.
Формула – це основний інструмент аналізу даних. За допомогою формул можна виконувати математичні дії, порівнювати, обєднувати дані як у межах одного робочого.
Введення даних і виведення результатів. Використання присвоєння Нехай змінній а потрібно надати початкове значення 5, змінній b 10, змінній с -2,5, змінній.
8 Практична робота 11 Налагодження готової програми За новою програмою Урок 38.
Транксрипт:

Вказівники Вказівник (або покажчик) – особливий тип даних, значенням якого є адреса певного байта оперативної памяті. Значення покажчика - це беззнакове ціле, воно повідомляє, де розміщена змінна, і нічого не говорить про саму змінну. Вказівники можуть бути: - константними, зберігають незмінну адресу ділянки ОП (такими є імена масивів і символьних рядків); - змінними, їм можна надавати значення адрес різних ділянок ОП. Змінна типу вказівник оголошується подібно звичайним змінним із застосуванням унарного символу "*". Форма оголошення наступна: тип * імя вказівника ; де тип - найменування типу змінної, адресу якої буде містити змінна-вказівник (на яку він буде вказувати).

Вказівник містить адресу першого байту змінної визначеного типу. Тип змінної, що адресується, і на яку посилається вказівник, визначає об'єм ОП, що виділяється змінній, та зв'язаному з нею вказівнику. Приклад: char *pc; float *pf; int ml [5]; /* - ім'я масиву на 5 значень типу int; ml - покажчик-константа*/ Константа NULL зі стандартного файлу stdio.h призначена для ініціалізації вказівників нульовим (незайнятим) значенням адреси.

Базові операції: Унарні операції & та * : & ім'я змінної - одержання адреси; визначає адресу розміщення значення змінної визначеного типу; * ім'я-вказівника - отримання значення визначеного типу за вказаною адресою; визначає вміст змінної, розміщеної за адресою, що міститься у даному покажчику; це - непряма адресація (інші назви - "зняття значення за вказівником" або "розіменування" ). Оператор присвоювання значення адреси вказівнику : Ім'я_змінної_вказівник = & ім'я змінної; Наприклад: int i, *pi; /* pi -змінна вказівник*/ pi = &i; /* pi одержує значення адреси 'i' */

Одне з основних співвідношень при роботі з вказівниками – це симетричність операцій адресації та непрямої адресації. Вона полягає в тому, що: *&х == х, тобто вміст за адресою змінної х є значення х. Над вказівниками можна виконувати всі операції порівняння. Приклад: int *pc, *pnew; if ( pc==pnew ) pc=NULL; До значення вказівника можна додавати (чи віднімати ) довільне ціле число: p=p + k. Результатом буде збільшена на k*sizeof (базовий тип вказівника p ) нова адреса. Величина, яка додається до значення вказівника (чи віднімається) є кратною розміру обєкта.

Нетипізовані вказівники Оголошуються void *p; Сумісний з усіма вказівниками програми та адресами усіх обєктів. Можна присвоювати значення void –вказівників вказівникам з довільним типом і навпаки. Застосовують для оголошення параметрів функцій, що можуть набувати значення адрес обєктів різних типів, а також щоб забезпечити можливість повернення з функції адреси неозначеного обєкта. Бібліотечна функція malloc ( ), яка виділяє в динамічній памяті ділянки заданого обсягу, має тип результату void * ( повертає адресу першого байта виділеної ділянки), що дає змогу використовувати її для розташування в памяті обєктів різних типів

Приклад char *pst ; double *par; pst = malloc ( 300 ); par = malloc ( n * sizeof(double) ); Вказівник pst отримає адресу першого байта ділянки, а вказівник par – адресу першого байта першого елемента динамічного масиву з n даних, що мають тип double. Можна виконувати присвоєння *pst = x ; *(par + 3) = 14.7 ; Першим символом рядка, на який вказує pst, стане символ x, а константу 14.7 буде записано як четвертий елемент масиву дійсних чисел.

Хоча значення нетипізованого вказівника можна присвоювати довільному іншому вказівникові, рекомендують застосовувати операцію явного перетворення типу ( явне перетворення обовязкове для мови С++) pst = (char *)malloc ( 300 ); par = (double *)malloc ( n * sizeof (double) ); Використовуючи операцію перетворення типу, можна присвоїти вказівнику значення іншого вказівника, що має відмінний базовий тип ( без додаткового нетипізованого вказівника) pst = (char *) par; Обережно з присвоєнням вказівнику адреси обєкта іншого типу !