Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Int main ( )

{

int x = 10;

int *px = &x;

cout << " x =" << x << endl;

cout << "*px =" << *px << endl;

x* = 2; // або x = x*2;

cout << " Нове значення* px =" << *px << endl;

*px += 2; // або *px =*px + 2;

cout << " Нове значення* px=, тобто х=" << x << endl;

return 0;

}

Результат виконання програми:

x = 10

*px = 10

Нове значення *px = 20

Нове значення*px, тобто x = 22

Сам покажчик-змінна має свою адресу, тому буде справедливим

наступний запис:

int *pt1, *pt2;

pt1 = (int*) &pt2; //тут покажчику pt1привласнюється адреса пам'яті,

//де розташована зміннаpt2

Це має сенс у ситуації, коли :

int y,*pt1, *pt2 =&y;

pt1 = (int*) & pt2; .

Існують наступні обмеження на використання операції взяття адреси "&":

— не можна визначати адресу константи ( оскільки їй не приділяється комірка пам'яті), тобто неприпустимий запис : vp = &345;

— не можна визначати адресу результату арифметичного виразу, тому наступний запис невірний :vp = & (x + y); .

 

Для змінних – покажчиківдозволені операції:

— присвоювання;

— інкремент і декремент;

— додавання і віднімання;

— порівняння покажчиків однакового типу.

Наприклад, демонстраційна програма з використанням змінних-покажчиків може мати вигляд:

 

//P2_6.CPPвикористання змінних- покажчиків

#include < iostream>

using namespace std;

Void main ( void )

{

int *ptr1 = (int*)100 ;

int *ptr2 = (int*) 200;

ptr1++;

ptr2 -= 10;

cout << "ptr1=" << ptr1 << endl;

cout << "ptr2=" << ptr2 << endl;

cout << "ptr2 - ptr1=" << ptr2 - ptr1 << endl;

}

Результат виконання програми :

ptr1 = 00000068

ptr2 = 000000A0

ptr2 - ptr1 = 14

У програмі операція ptr1++збільшить адресу на 4 байта ,оскільки дані типу int займають 4 байти,операція ptr2-=10зменьшує адресу на 40 байтів.Адреси виводяться на екран в шістнадцятковому вигляді.

 




Переглядів: 280

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.005 сек.