Windows API声明中数据类型的星号是什么?

时间:2011-05-11 18:07:45

标签: c winapi

我知道(例如)DWORD是什么,它是一个四字节无符号长整数。

但是DWORD *在参数名称之前带有星号的含义是什么意思,如下所示:

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

更新

我发现它有一些额外的提示,它是一个指针。第一个是参数名称以 p 开头。另一个是它是一个输入/输出参数,并且被调用者可以改变调用者变量值的唯一方法是传递指针而不是值。当然,字符串也是指针,并且它们不使用星号,但这是因为字符串不能通过值传递所以它将是多余的,而一个整数当然可以传递按价值(通常/通常是)。

3 个答案:

答案 0 :(得分:5)

这意味着pcchUnescaped是指向DWORD类型对象的指针。这是正常的C,与Windows API无关。

答案 1 :(得分:2)

它表示指向内存中DWORD的指针。

答案 2 :(得分:0)

来自MSDN:

DWORD是32位无符号整数(范围:0到4294967295十进制)。因为DWORD是无符号的,所以它的第一位(最高有效位(MSB))不保留用于签名。