Лабораторная работа: Вказівки, масиви і символьні рядки в мові C
Метою лабораторної роботи є отримання практичних навиків в роботі з вказівниками і з адресною арифметикою в мові С.
2. Теоретичні відомості
В С++ існує надзвичайно потужний інструмент для роботи зі складними агрегатами даних, який надає загальний підхід до різних на перший погляд програмних об’єктів таких як масив та рядок. Цей і нструмент базується на широкому використанні вказівника.
Вказівник - це символічне представлення адреси. Він використовується для непрямої адресації змінних і об'єктів.
В мові С++ є операція визначення адреси — &, за допомогою якої визначається адреса комірки пам’яті, що містить задану змінну. Наприклад, якщо vr — ім’я змінної, то &vr — адреса цієї змінної.
В С++ також існують і змінні типу вказівник. Значенням змінної типу вказівник є адреса змінної або об'єкта. Нехай змінна типу вказівник має ім'я ptr, тоді в якості значення їй можна присвоїти адресу за допомогою наступного оператора:
ptr=&vr;
В мові С++ при роботі з вказівниками велике значення має операція непрямої адресації — *. Операція * дозволяє звертатися до змінної не напряму, а через вказівник, який містить адресу цієї змінної. Ця операція є одномісною і має асоціативність зліва направо. Цю операцію не слід плутати з бінарною операцією множення. Нехай ptr — вказівник, тоді *ptr — це значення змінної, на яку вказує ptr.
Опис змінних типу вказівник здійснюється за допомогою операторів наступної форми:
<тип> *<ім'я вказівника на змінну заданого типу>;
Кожна змінна в програмі це об'єкт, що має ім'я і значення по імені можна звернутися до змінного й одержати її значення.
Оператор присвоювання ( = ) виконує зворотну дію: імені змінної ставиться у відповідність значення.
a=10;
Вираз &a дозволяє одержати адресу ділянки пам'яті, виділеного змінній а. Операція & застосовна тільки до об'єктів, що мають ім'я і розміщених у пам'яті.
Маючи можливість визначити адреси змінної за допомогою &, треба мати можливість працювати з цією адресою: зберігати його, передавати, перетворювати.
Для цього вводиться поняття вказівника.
Вказівник - це змінна, значенням якої служить адреса об'єкта конкретного типу. Нульова адреса позначається константою NULL, що визначена в заголовному файлі stdio.h. Щоб визначити вказівник треба повідомити на об'єкт якого типу посилається цей вказівник.
char *z;
int *k,*i;
float *f;
* - це операція разіменування. Операндом цієї операції завжди є вказівник. Результат операції - це той об'єкт, що адресує вказівник_операнд.
*z=’$ ‘;
*k=*i=0;
Приклад:
int e, c, b, *m;
. . . . . . . . .
m = &e ;
*m = c + b ;
Операції над вказівниками.
присвоювання (=);
--> ЧИТАТЬ ПОЛНОСТЬЮ <--