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

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

Змінна-вказівник не того ж типу, що змінна, адресу якої вона зберігає. В програмі 20.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;

}

Програма 20.2

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

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

int* ptr;

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

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

char *charptr;

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

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

char* ptr1, *ptr2, *ptr3;

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

char *ptr1, *ptr2, *ptr3;

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

 








Дата добавления: 2015-08-26; просмотров: 584;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.