[英]Why does this work even though the function is not called with a pointer to a pointer as a parameter?
在MSDN的代碼中,是這樣的:
HRESULT DemoApp::LoadBitmapFromFile(
ID2D1RenderTarget *pRenderTarget,
IWICImagingFactory *pIWICFactory,
PCWSTR uri,
UINT destinationWidth,
UINT destinationHeight,
ID2D1Bitmap **ppBitmap
)
和這個:
hr = LoadBitmapFromFile(
m_pRenderTarget,
m_pWICFactory,
L".\\sampleImage.jpg",
100,
0,
&m_pBitmap
);
當m_pBitmap實際上是指向ID2D1Bitmap對象(ID2D1Bitmap * m_pBitmap)的指針而不是指向ID2D1Bitmap對象的指針時,它如何工作?
請注意,傳遞的參數不是m_pBitmap
,而是&m_pBitmap
。
如果m_pBitmap
是ID2D1Bitmap*
,則使用&
取得它的地址時,您將獲得ID2D1BitMap**
-就像函數期望的那樣,是指向指針的指針。
獲取指針的地址使其成為指向指針的指針。
int i = 0;
int *pi = &i // &i is the address of i (or a pointer to the int i)
&pi // &pi is the address of pi (or a pointer to the pointer to i)
因此, &m_pBitmap
使指針指向該指針。
傳遞指針的地址會使參數指針指向完全屬於該類型的指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.