я прочитал книгу, которая дает пример файла .h, что равно интерфейс очереди в Java:C++/аргументы в h. файл
void InitQueue(Queue* pQueue, int iSize);
bool Insert(Queue* pQueue, const Item* pItem);
bool Extract(Queue* pQueue, Item** pItem);
bool GetFirst(const Queue* pQueue, Item** pItem);
bool IsFull(const Queue* pQueue);
bool IsEmpty(const Queue* pQueue);
Я не понял две вещи:
- Почему в
Extract, GetFirst
второй аргумент имеет типItem**
, а неItem*
? Что значит, когда мы говорим об этом? - Почему в некоторых функциях (
IsFull, IsEmpty
, ..) мы получаем аргументconst Queue*
, а не простоQueue*
?
Была ли книга, написанная [2-звездным программистом] (http://c2.com/cgi/wiki?ThreeStarProgrammer)? – Mysticial
Действительно ли это C++? Это похоже на то, что делалось в C. (Опять же, возможно, это какая-то техника, о которой я не знаю) – Pubby
Потому что они хотят иметь возможность изменять указатель, который вы передаете функции. Если бы это был только «Item * pItem», вы бы передали копию своего указателя, который, если они изменили его внутри функции, не будет виден вне функции –