Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Коротко о VOID (for Beginners) 01.03.05 20:14 Число просмотров: 2712
Автор: Lexxx Статус: Незарегистрированный пользователь Отредактировано 01.03.05 20:16 Количество правок: 1
|
> это сообщение стоило бы написать, наверно, в разделе > beginners, по я все-таки решил здесь. так вот, я вообще > изучаю С++, а с той частью С, которая считается устаревшей > в С++, не знаком. а сейчас стал WinApi и DirectX изучать, а > там всплывают иногда моменты на С. объясните, пожалуйста, > что эт за такой указатель на тип void (void*), потому что в > моей 1000-страничной книге по С++ этого нет, и в статьях, > которые у меня есть, тоже нет. в общем-то понятно, но > хотелось бы как-нить поподробней. Ты знаешь, вообще-то все пременные типа int*,char*,TMyClass*,bool*,void*,<любой тип>* (короче все указатели) представляют собой 32-bit указатель, который содержит некоторый адрес памяти (0-4Гб). Процессору в принципе глубоко пофиг, какие именно данные хранятся по этому адресу, но любой компилятор (кроме васика :) вниматель следит за тем, чтобы указатель на некоторый тип данных (на пример char*) не использовался как указатель на int (в данном случае имеет место простое несовпадение размера переменной (1b-4b)). А тип Void*, подразумевает просто некоторый адрес памяти, без указания размера данных, которые по этому адресу хранятся. Простым кастингом можно заставить компилятор считать, что данные хранящиеся по адресу Х (void*X), являются данными именного того типа к которрому мы его приводим.
В принципе тип данных (void*), является очень гибким инструментом, но чтобы пользоваться им, надо четко представлять себе, что именно делает твоя прога в данный момент, и какие именно данные хранятся по этому адресу.
Есть еще только одно место (кроме указателей), где допустимо использование void - это возвращаемое значение. И это значит, что функция просто не возвращает значение (является процеДУРОЙ).
|
|
|