русс | укр

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

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


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


Змінні вказівники


Дата додавання: 2014-04-22; переглядів: 1150.


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

Змінна-вказівник не того ж типу, що змінна, адресу якої вона зберігає. В програмі 12.2 показаний синтаксис змінних-вказівників.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

int main()

{clrscr();

int var1=11;

int var2=22;

cout<<”&var1=”<<&var1<<endl;

cout<<”&var2=”<<&var2<<endl<<endl;

int* ptr;

ptr=&var1;

cout<<ptr<<endl;

ptr=&var2;

cout<<ptr<<endl;

 

bioskey(0);

 

return 0;

}

Програма 12.2

В цій програмі визначені дві цілочисельні змінні var1 і var2, які ініціалізовані значеннями 11 і 22. Потім програма виводить на дисплей їх адреси.

Далі в програмі визначена змінна-вказівник в рядку

int* ptr;

Зірочка означає вказівник на. Отже, в цьому рядку визначена змінна ptr як вказівник на int, тобто ця змінна може містити в собі адресу змінної типу int. На відміну від Паскалю, в С++ не використовуються нетипізовані вказівники Pointer. Тобто, вказівник в С++ завжди вказує на якийсь конкретний тип.

Слід відмітити, що загальноприйнято визначати вказівник за допомогою зірочки, що пишеться перед іменем змінної, а не зразу після назви типу:

char *charptr;

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

Якщо ми визначаємо в одному рядку більш ніж один вказівник одного і того ж типу, то зірочку необхідно ставити перед іменем кожної змінної:

char* ptr1, *ptr2, *ptr3;

І в такому випадку можна використати стиль написання, при якому зірочка ставиться поруч з іменем:

char *ptr1, *ptr2, *ptr3;

Вказівнику обов’язково повинне бути присвоєне якесь значення, інакше він вказуватиме на випадкову адресу. Неініціалізований вказівник може призвести до краху системи, між тим, компілятор не виявляє помилок такого виду.

 


<== попередня лекція | наступна лекція ==>
Адреси і вказівники | Доступ до змінної за вказівником


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