русс | укр

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

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


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


Вказівник на void


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


Відмітимо одну особливість вказівників. Адреса, яка поміщається у вказівник, повинна бути одного з ним типу. Ми не можемо присвоїти вказівнику на int адресі змінної типу float. Однак є один виняток: існує тип вказівника, який може вказувати на будь-який тип даних. Він називається вказівником на void і визначається так:

void* ptr; //вказівник на довільний тип даних

Такі вказівники призначені для використання в певних випадках, наприклад, при передачі вказівників у функції, що працюють незалежно від типу даних, на які вказує вказівник.

Розглянемо приклад використання вказівника на void. В цій програмі також показано, що, якщо ми не використовуємо вказівника на void, нам слід бути обережними, присвоюючи вказівнику адресу того ж типу, що й вказівник.

Далі приведений лістінг програми 12.5

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

int main()

{clrscr();

int intvar;

float flovar;

int* ptrint;

float* ptrflo;

void* ptrvoid;

ptrint=&intvar;//так можна – однакові типи

// ptrint=&flovar; //так не можна – різні типи

ptrint=(int*)&flovar;

// ptrflo=&intvar; //так не можна – різні типи

ptrflo=(float*)&intvar; //так можна – примусове перетворення типів

ptrflo=&flovar;

ptrvoid=&intvar; //так можна - void

ptrvoid=&flovar; //так можна - void

 

bioskey(0);

return 0;

}

Програма 12.5

 

В цій програмі ми використали примусове перетворення типів «вказівник»

 

ptrflo=(float*)&intvar; //так можна – примусове перетворення типів

 

Вказівники і масиви

Вказівники і масиви дуже тісно пов’язані між собою. Фактично, ім’я масиву є вказівником на його перший член. Тому «переміщуватися вздовж» масиву можна з використанням вказівників, як показано в програмі 12.6.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

int main()

{clrscr();

int intarray[5]={31,54,77,52,93};

for(int j=0;j<5;j++)

cout<<*(intarray+j)<<endl;

bioskey(0);

return 0;

}

Програма 12.6

 

 


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


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