0

在 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 对象的指针时,它是如何工作的?

4

3 回答 3

4

请注意,传递的参数不是m_pBitmap,而是&m_pBitmap

If m_pBitmapis a ID2D1Bitmap*then 当你用 获取它的地址时&,你会得到一个ID2D1BitMap**- 一个指向指针的指针,正如函数所期望的那样。

于 2013-03-12T16:54:24.960 回答
2

获取指针的地址使其成为指向指针的指针。

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创建一个指向指针的指针。

于 2013-03-12T16:54:36.970 回答
0

传递指针的地址会使参数指针指向与类型完全相同的指针。

于 2013-03-12T16:58:09.993 回答