розіменування покажчиків

Для того щоб отримати (прочитати) значення, записане в деякій області пам'яті, на яку посилається покажчик, використовують операцію непрямого звернення, або разименованія (*). При цьому використовується ім'я покажчика із зірочкою перед ним:

long double Num = 10;

long double Flag;

long double * ptr = &Num;

На практиці досить широко застосовується так званий порожній покажчик (типу void), який може вказувати на об'єкт будь-якого типу. Для отримання доступу до об'єкта, на який посилається вказівник void, його необхідно попередньо привести до того ж типу, що і тип самого об'єкта.

Розглянемо приклад, який ілюструє використання порожнього покажчика.

Int main ()

Int nNum = 9;

Void * ptr;

Доступ до елементів масиву через покажчики

char * pArr = ArrayOfChar;

Разименовивая покажчик pArr, можна отримати доступ до вмісту ArrayOfChar [0]:

char Letter = * pArr;

Оскільки в C ++ покажчики і масиви тісно взаємопов'язані, збільшуючи або зменшуючи значення покажчика на масив, програміст отримує можливість доступу до всіх елементів масиву шляхом відповідної модифікації покажчика:

// pArr вказує на ArrayOfChar [0] ( 'W')

// pArr вказує на ArrayOfChar [3] ( 'L')

// pArr вказує на ArrayOfChar [4] ( 'D')

char Letter = * pArr; // Letter = 'D';

Таким чином, після проведених арифметичних операцій покажчик pArr буде посилатися на елемент масиву з індексом 4.

До цього ж елементу можна звернутися в інший спосіб:

Letter = * (ArrayOfChar + 4);

// ЕквівалентLetter = ArrayOfChar [4];

Присвоєння значень одного масиву значень іншого масиву виду Array [] = Another [] або Array = Another неприпустимо, так як компілятор не може самостійно скопіювати всі значення одного масиву в значення іншого. Для цього програмісту необхідно робити певні дії (при доступі до елементів за індексом найчастіше використовується циклічне привласнення).