русс | укр

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

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


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


Void – вказівники, типізація вказівників


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


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

При виконання операції звертання за адресою через не типізовані вказівники необхідно явно задавати тип значення, яке зберігається в пам'яті. Наприклад:

 

#include <iostream>

using namespace std;

int main() {

int a[ 5 ] = { 1, 2, 3, 4, 5 };

int * pi;

void * pv;

pi = & a[ 0 ];

pv = pi;

cout << *( int * )pv;

*(( int * ) pv + 1 ) = 23;

cout << a[ 1 ];

}

 

Операції перетворення до заданого типу і звертання за адресою мають однаковий пріоритет, виконуються справа наліво. Тобто, при обчисленні виразу *( int * )pv спочатку вказівник на void перетворюється в вказівник на int, після цього виконується звертання за отриманою адресою. Так само, при обчисленні виразу *(( int * ) pv + 1 ) спочатку вказівник на void перетворюється в вказівник на int, після цього значення вказівника збільшується на одиницю – тепер вказівник посилається на другий елемент масиву. Останньою виконується операція звертання за адресою, в цьому прикладі ми отримуємо адресу, по якій буде записано значення 23.


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


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