Дороговкази в мові програмування з
Отже, введемо позначення:
* Ptr - означає "розіменування покажчика ptr"
покажчик на змінну, що зберігає int-число.
Для початку визначимо, що таке покажчик.
int var1, var2, z; / * Цілочисельні змінні * /
int * pointer; / * Покажчик на целочисленную змінну * /
Ми будемо зображати покажчик у вигляді СТРІЛКИ; це хороший прийом і при практичному програмуванні.
Таким чином, УКАЗАТЕЛЬ - це "стрілка, що вказує на якийсь ящик-змінну". Початок цієї стрілки можна (в свою чергу) зберігати в який-небудь змінної. При цьому, якщо стрілка вказує на змінну типу int, то тип змінної, що зберігає початок стрілки, є int * Якщо типу char, то тип - char *
Чи законно x стрілка на ящик "x" arr [3] стрілка на ящик "arr [3]" Незаконно - (2 + 2) тут немає іменованого "ящика", на який вказує стрілка, та й взагалі ящика немає.
Тип [Модифікатор] * ім'я-покажчика;
ім'я-покажчика - ідентифікатор змінної типу покажчик;
* - визначає змінну типу покажчик.
Модифікатор не обов'язковий і може приймати значення (near. Far. Huge) призначений для визначення обсягу пам'яті відводиться під покажчик.
Розглянемо ще один приклад використання покажчиків.
Наведемо схему зв'язків покажчиків:
В результаті виконання програми буде виведено
d = 7776 pd = 65522 * pd = 7776 pd = 65520
c = A pc = 65525 * pc = A pc = 65518
Над покажчиками можна виконувати арифметичні операції, проте операції і * мають більш високий пріоритет, ніж арифметичні операції. Розглянемо приклад. ілюструє це правило:
При цьому a = 10, u - не змінилося, z = 5.
Доцільно розглянути використання покажчиків і операцій над ними для обробки інформації представленої у вигляді статичних масивів.
Нехай дано цілочисельний масив, який необхідно інвертувати.
Завдання вирішується з використанням індексації елементів масиву, проте для того щоб зрозуміти як можна використовувати покажчики спробуємо вирішити її з використанням покажчиків декількома способами.
У другому прикладі приріст покажчика d і зменшення покажчика h перенесені в тіло циклу, а також використаний цикл з передумовою. Це можливо тому, що унарні операції ++, -, * мають однаковий пріоритет виконання на відміну від інших арифметичних операцій.
В останньому прикладі відбувається імітація індексних змінних покажчиками зі зміщенням. Тут замість a [i] використовується покажчик на початок масиву зрушений на задане число елементів * (a + i).
При вирішенні деяких завдань можливо також використовувати статичні масиви покажчиків.
Результат виконання програми:
6.000 5.000 4.000 3.000 2.000 1.000
1.000 2.000 3.000 4.000 5.000 6.000
Результат виконання програми.