Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
9.35 Кб
Скачать

Інформатика — Теорія — Використання покажчиків    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаПокажчики : Використання покажчиківЗміст курсу

Вступ

Теорія

Основні відомості про покажчики

Основні операції над покажчиками

Використання покажчиків

Багаторівнева непряма адресація

Операції над покажчиками

Поточна перевірка знань

Використання покажчиків

Висновки

Версія для друку

  Використання покажчиків      Покажчики можна використовувати:- у виразах, наприклад, для одержання значень, розташованих за адресою, що зберігається у покажчику;- у лівій частині операторів присвоювання, наприклад: для одержання значення адреси, за якою розташоване значення змінної; для одержання значення змінної.     Наприклад, якщо pi - покажчик цілого значення (змінної i), то *pi можна використовувати в будь-якому місці програми, де можна використовувати значення цілого типу. Наприклад:int i = 123, j, *pi;pi = &i; //pi у лівій частині оператора присвоювання j = *pi + 1;       //-це еквівалентно: j = i + 1; pi-у виразі правої частини оператора

          // присвоювання     У виразах унарні операції & і *, пов'язані з покажчиками, мають більший пріоритет, ніж арифметичні. Наприклад,*рх = &х;у = 1 + *рх; //-спочатку виконується '*', потім '+'Останній оператор еквівалентний:у = 1 + х;     Для звертання до значення за допомогою покажчика-змінної його можна використовувати в операторі присвоювання скрізь, де може бути ім'я змінної. Наприклад, після виконання оператора: рх = &х; цілком еквівалентними є такі записи.

Оператор: Його еквівалент: Або:*рх =0; х = 0;*рх += 1; *рх = *рх + 1; х = х + 1;(*рх)++ ; *рх = *рх + 1; х = х + 1;(*рх)--; *рх = *рх - 1; х = х - 1;

     

Приклад 4. Програма демонструє найпростіше практичне використання покажчиків, виводячи звичайну послідовність літер алфавіту:

#include<iostream.h>main(){

     char c; // змінна символьного типу     char *pc; //покажчик на змінну символьного типу     pc=&c;     for(c='A';c<='Z';c++)     cout<<*pc;     return 0;}

     У операторі cout<<*pc; має місце розіменування покажчика (*рс) - передача у функцію значення, що зберігається за адресою, яка міститься у змінній рс. Щоб дійсно довести, що рс є псевдонімом с, спробуємо замінити *рс на с у виклику функції - і після заміни програма працюватиме абсолютно аналогічно. Оскільки покажчики обмежені заданим типом даних, типовою серйозною помилкою їх використання буває присвоєння адреси одного типу даних покажчика іншого типу, на що компілятор реагує таким чином:"Suspicious pointer conversion in function main()".     На ТurboС це лише попередження (підозріле перетворення покажчика у функції main()(?!)), і якщо на нього ніяк не відреагувати, то програма працюватиме й надалі (адже помилку зафіксовано не буде) і залишається лише здогадуватися, який результат буде надалі. Зазначимо, що компілятор С++ з приводу такого "підозрілого перетворення" пішов все-таки далі: він просто відмовляється працювати, видаючи повідомлення про помилку. Відповідальність за ініціалізацію покажчиків повністю покладається на програміста, і більш детально про це йтиметься далі.

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content