русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Void main()


Дата додавання: 2014-11-28; переглядів: 818.


{ double x[100];

double *p1= &x[10], *p2= &x[20];

printf("p2-p1 = %d \n",p2-p1);

}

отримаємо на екрані наступне:

p2 - p1 = 10

При одержанні нових значень покажчиків за допомогою зазначених вище операцій, наявність у тій області пам'яті, що відповідає новому значенню адреси, об'єкта відповідного типу не перевіряється. Це є джерелом численних і досить неприємних помилок, вони виявляються тільки лише на етапі виконання програми. Локалізація таких помилок з цієї причини може бути досить непростою.

Застосовуються покажчики в більшості випадків для роботи з масивами, для програмування операцій з динамічними об'єктами, а також у якості параметрів функцій. Нижче наведено цікавий приклад використання покажчика на тип char для побудови функції strcpy, що здійснює копіювання символів з рядка s2 у рядок s1:

 

void strcpy(char* s1, char* s2)

{ while (*s1++ = *s2++);

}

 

Зверніть увагу на те, що рядок-джерело і рядок-призначення передаються у функцію за допомогою покажчиків. Це є основний спосіб передачи масиву у функцію.

Крім поняття покажчик на об’єкт, існує й таке поняття, як покажчик на функцію. Робота з такими покажчиками буде розглянута пізніше, у главі, присвяченій функціям.

Типовими помилками при використанні покажчиків є:

- запис операцій з невизначеними (не ініціалізованими) покажчиками;

- втрата адреси динамічного об'єкта при виході з блоку.

У прикладі, наведеному нижче, виконується операція з невизначеним покажчиком, що є грубою помилкою:

float* p;

*p = 12.5;

Після виконання першого рядка буде створений покажчик, який залишається не ініціалізованим. Це означає, що його значення буде випадковим. Виконання другого рядка приведе до запису числового значення типу double (8 байт) по випадковій адресі. У більшості випадків після запуску програми це приводить до одержання повідомлення про помилку періоду виконання, яке генерується операційною системою. Воно може виглядати так:


<== попередня лекція | наступна лекція ==>
Покажчики | Write of address 0x0


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн