The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

A.3 Неопределённые указатели — void *

Неопределённые указатели — void *

Предыдущая  Содержание  Следующая V*D*V

Значение любого указателя может быть присвоено переменной указателя с типом void * и наоборот, за исключением имеющих классификаторы const. Эти присвоения не изменяют значение указателя. Фактически, это отключает проверку типов в компиляторе:

 

int iv [] = { 1, 2, 3 };

int * ip = iv;                    ок, тот же тип

void * vp = ip;                   ок, произвольный присваивается void *

double * dp = vp;                 ок, void * присваивается произвольному

 

В качестве спецификации формата для записи и чтения значений указателей для printf() и (теоретически) для scanf() используется %p. Подходящим типом аргумента является void * и, следовательно, любой тип указателя:

 

void * vp;

  printf("%p\n", vp);             выводит значение на экран

  scanf("%p", & vp);              читает значение

 

Арифметические операции включающие в себя void * не допускаются:

 

void * p, ** pp;

  p + 1                           ошибка

  pp + 1                          ок, указатель на указатель

 

Эту ситуацию иллюстрирует следующая картинка:

 

OOC_Generic_Pointers_-_void

 

Предыдущая  Содержание  Следующая