Что такое звездочка в типе данных в объявлении Windows API? - PullRequest
1 голос
/ 11 мая 2011

Я знаю, что (например) DWORD, это четырехбайтовое длинное целое число без знака.

Но что означает DWORD * со звездочкой перед именем параметра, как показано здесь:

HRESULT UrlUnescape(
  __inout      PTSTR pszURL,
  __out_opt    PTSTR pszUnescaped,
  __inout_opt  DWORD *pcchUnescaped,
  DWORD dwFlags
);

ОБНОВЛЕНИЕ

Мне пришло в голову несколько дополнительных подсказок, что это указатель.Во-первых, имя параметра начинается с p .Другая причина в том, что это параметр in / out, и вызываемый объект может изменить значение переменной вызывающей стороны только в том случае, если передан указатель, а не значение.Конечно, строки также являются указателями, и они не используют звездочку, но это потому, что строка не может быть передана по значению, поэтому она будет избыточной, в то время как целое число, безусловно, может быть переданозначение (и часто / обычно это).

Ответы [ 3 ]

5 голосов
/ 11 мая 2011

Это означает, что pcchUnescaped является указателем на объект типа DWORD. Это нормальный C, ничего специфически не связанного с Windows API.

2 голосов
/ 11 мая 2011

Это означает указатель на DWORD в памяти.

0 голосов
/ 11 мая 2011

Из MSDN:

DWORD - это 32-разрядное целое число без знака (диапазон: от 0 до 4294967295, десятичное число).Поскольку DWORD не подписан, его первый бит (старший бит (MSB)) не зарезервирован для подписи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...