русс | укр

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

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


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


Перетворення та ініціалізація вказівок


Дата додавання: 2015-01-08; переглядів: 966.


 

Для вказівок підтримуються неявні перетворення з будь-якого типу вказівки до типу void*. Будь-якій вказівці можна привласнити константу null. Крім того, допускаються явні перетворення:

· між вказівками будь-якого типу;

· між вказівками будь-якого типу і цілими типами.

Коректність перетворень лежить на совісті програміста. Перетворення ніяк не впливають на величини, на які посилаються вказівки, але при спробі набуття значення по вказівкам невідповідного типу поведінка програми не визначена.

 

Нижче перераховані способи привласнення значень вказівкам:

1. Привласнення вказівки адреси існуючого об'єкту:

1.1. За допомогою операції отримання адреси:

int а = 5;

int* р = &а;

 

1.2. За допомогою значення іншої вказівки:

int* r = р;

 

1.3. За допомогою імені масиву, яке трактується як адреса:

int[] b = new int[] {10, 20, 30, 50}; //масив

fixed ( int* t = b ) { ... }; // привласнення адреси початку масиву

fixed ( int* t = &b[0] ) { ... }; //те ж саме

 

Оператор fixed розглядається пізніше.

 

2. Привласнення вказівки адреси області пам'яті в явному вигляді:

 

char* v = (char *) 0x12F69e;

 

Тут 0x12F69e - шістнадцятирічна константа, (char *) - операція приведення типу: константа перетвориться до типу вказівки на char. Використовувати цей спосіб можна тільки в тому випадку, якщо адреса точно відома, інакше може виникнути виключення.

 

З. Надання нульового значення:

 

int* хх = nul1;

 

4. Виділення області пам'яті в стеку і привласнення її адреси вказівці:

 

int* s = stackalloc int [10];

 

Тут операція stackalloc виконує виділення пам'яті під 10 величин типу int (масив з 10 елементів) і записує адресу початку цієї області пам'яті в змінну s, яка може трактуватися як ім'я масиву.

 


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


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