Вказівник на void
Відмітимо одну особливість вказівників. Адреса, яка поміщається у вказівник, повинна бути одного з ним типу. Ми не можемо присвоїти вказівнику на int адресі змінної типу float. Однак є один виняток: існує тип вказівника, який може вказувати на будь-який тип даних. Він називається вказівником на void і визначається так:
void* ptr; //вказівник на довільний тип даних
Такі вказівники призначені для використання в певних випадках, наприклад, при передачі вказівників у функції, що працюють незалежно від типу даних, на які вказує вказівник.
Розглянемо приклад використання вказівника на void. В цій програмі також показано, що, якщо ми не використовуємо вказівника на void, нам слід бути обережними, присвоюючи вказівнику адресу того ж типу, що й вказівник.
Далі приведений лістінг програми 20.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;
}
Програма 20.5
В цій програмі ми використали примусове перетворення типів «вказівник»
ptrflo=(float*)&intvar; //так можна – примусове перетворення типів
Дата добавления: 2015-08-26; просмотров: 681;