请教个函数参数中的指针问题

来源:百度知道 编辑:UC知道 时间:2024/09/26 12:27:57
一个函数原型:
HRESULT MAPILogonEx(
ULONG ulUIParam,
LPTSTR lpszProfileName,
LPTSTR lpszPassword,
FLAGS flFlags,
LPMAPISESSION FAR* lppSession
);

其中LPMAPISESSION定义是:
typedef IMAPISession *LPMAPISESSION

有一处没看明白
LPMAPISESSION已经是指针了
为什么在函数原型中,还要定义:
LPMAPISESSION FAR* lppSession?
为什么不用:
LPMAPISESSION lppSession?
要是定义成
LPMAPISESSION FAR* lppSession
使用lppSession的时候,要用:
(*lppSession)->agalfkdjasl()
要是定义成
LPMAPISESSION lppSession
使用的时候,只需要
lppSession->asfkd()
不定义成指针的指针多方便啊

lppSession
[out] Pointer to a pointer to the MAPI session interface.
这是MSDN的解释,是说,lppSession是一个“指向指针的指针”,所以使用匈牙利标识法,前缀是lpp,lp是长指针,p是指针,那不就是“指向指针的指针”?
别问为什么这么搞,微软知道。先说这么多吧,我要断网了,你要没看懂,就等待其他朋友的解释吧。(^_^)