Результат виконанння програми

значення показник значення змінної змінної 16.07 0x427f2bf8 16.07 2 0x427f2bee 2 взаєм. компенс. операцій * і &‘ &*aP=0x427f2bf8 *&aP=0x427f2bf8 кінець задачі


Показник може вказувати на дані с атрибутом const і сам мати атрибут const.

Наприклад:

const char *eP; /*об’ява показника на константний символ, хоча показник не є константою*/

const *char eP; /*об’ява константного показника на не константний символ. Значення, що записано у комірку, може змінюватися, але перевести показник на іншу комірку неможливо*/

const char *const eP; /*об’ява константного показника на не константний символ*/

Показнику можна присвоювати іншій показник, коли обидва вказують на один тип. Для приведення показників до одного типу потрібно застосувати операцію явного приведення типів.

Розглянемо два прикладу:

char *eP; long n; double d; int i;

(long)pPn = &n; d = (double*)&i;

Винятком є показник на тип void, котрому можна присвоювати показники на усі типи.

Наприклад:

void *xP; int i = 4; int *iP; iP = &i;

xP = iP; або xP = &i;

Однак, сам показник на void не може присвоїти показнику на іншій тип без попереднього приведення.

Наприклад:

iP = (int *)xP;

Крім того, показник на void до операції приведення не може бути ні змінений, ні разименований, так як він містить комірку пам’яті для не визначеного типу даних і компілятору не відомо, скільки байтів зарезервовано. Тому:

xP++; //недозволено

i = *xP; //недозволено

(int *)xP++; //дозволено

З показником можна здійснювати арифметичні дії, але набір операцій обмежений. Дозволені: операції інкрименту і декрименту, додавання та віднімання показників с іншими цілими числами, віднімання одного показника із іншого. Остання операція дозволена тільки для показника на один тип.

Арифметика показників відрізняється від загальноприйнятою. Коли ціле число n додається до показника (або віднімається з нього), то показник переміщується по коміркам пам’яті на стільки байт, скільки займає n змінних того типу, на якій він вказує. Віднімання двох показників визначає, скільки змінних даного типу розміщується між комірками, що вказані.

Арифметика показників співпадає зі звичайною тільки для показників на символьні змінні, тому що така змінна займає один байт пам’яті.

До показників можна застосовувати також операції порівняння. Арифметика показників має сенс тільки стосовно до масивів, тому що в цьому випадку комп’ютер гарантовано записує змінні одного типу в комірки послідовно один за одним.

Оглядові запитання

1. Що таке показник і що він містить у собі?

2. Як об’явити показник?

3. Як здійснюється операція адресація для показника?

4. Для чого застосовується для показника операція разименування?

5. Яким чином ім’я відсилається до значення змінної та показника?

6. Чи може показник вказувати на дані з атрибутом const?

7. Може показник мати атрибут const?

8. Коли показнику можна присвоїти інший показник?

9. Чим відрізняється арифметика показників від звичайної арифметики?



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: