Індексний запис і вказівники.Ім’я масиву без квадратних дужок – це вказівник на перший елемент масиву. Тому до першого елементу можна звертатися з допомогою операції посилання по вказівнику. Нехай описаний масив array[].Тоді вираз*arrayдасть його перший елемент, *(array +1) - другий і т. д. . Тоді можна записати такі співвідношення.
*(array)== array[0]
*(array +1) == array[1]
*(array +2) == array[2]
………………………………
*(array +n) == array[n]
Це зв’язок між зверненням до масиву по індексу і через операції з вказівниками.
Не можна використовувати не заданого (не ініціалізованого) вказівника в лівій частині оператора присвоєння.
Наприклад, описаний вказівник типу int
int *ptr;
Цей вказівник не ініціалізований, тому не вказує ні на що відоме. В неініціалізованих вказівниках є певне значення, тільки ми його не знаємо. В більшості випадків це 0. Нехай
*ptr=12;
Значення 12 поміститься по адресі ptr Ця адреса може відноситися до довільного місця в пам’яті, де розміщується операційна система, або сама програма. Значення 12 може затерти цінну інформацію і може привести до повного краху системи.
Обчислення зміщення і порівняння вказівників.Зміщення – це фактичне віднімання двох вказівників, Якщо є два вказівники на різні елементи одного масиву, то їх можна відняти один від одного і вияснити , на якій відстані вони знаходяться Адресна арифметика забезпечує автоматичне масштабування результату, і в підсумку відстань виражається в кількості елементів. Якщо ptr1 i ptr2 вказують на елементи одного і того масиву, то вираз ptr1-ptr2дає відстань між цими елементами.
Вказівники можна також порівнювати. Порівняння має сенс тільки для вказівників на один і той масив. При цьому виконуються операції порівняння = =, !=, <, >, >+, <+.
Молодші елементи масиву, тобто елементи з меншими індексами мають і менші адреси. Якщо ptr1 i ptr2 вказують на елементи одного і того масиву, то співвідношення ptr1<ptr2 істинне, коли ptr1вказує на елемент з меншим індексом, ніж ptr2. Множення і ділення над вказівниками не виконується.