游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2430|回复: 1

求教:这段里的参数为什么不直接用指针?

[复制链接]

5

主题

63

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
发表于 2012-9-13 16:47:00 | 显示全部楼层 |阅读模式
//-----------------------------------------------------------------------------
// Desc: 创建框架, 仅仅是分配内存和初始化,还没有对其成员赋予合适的值
//-----------------------------------------------------------------------------
HRESULT CAllocateHierarchy::CreateFrame(LPCSTR Name, LPD3DXFRAME *ppNewFrame)
{
  HRESULT hr = S_OK;
  D3DXFRAME_DERIVED *pFrame;

  *ppNewFrame = NULL;

  pFrame = new D3DXFRAME_DERIVED; //创建框架结构对象
  if (pFrame == NULL)  
  {
  return E_OUTOFMEMORY;
  }

//为框架指定名称
  hr = AllocateName(Name, (LPSTR*)&pFrame->Name);
if (FAILED(hr))
{
delete pFrame;
return hr;
}

//初始化D3DXFRAME_DERIVED结构其它成员变量
  D3DXMatrixIdentity(&pFrame->TransformationMatrix);
  D3DXMatrixIdentity(&pFrame->CombinedTransformationMatrix);

  pFrame->pMeshContainer = NULL;
  pFrame->pFrameSibling = NULL;
  pFrame->pFrameFirstChild = NULL;

  *ppNewFrame = pFrame;
  pFrame = NULL;

return hr;


ppNewFrame这个参数在传入时不加前面的*直接使用LPD3DXFRAME ppNewFrame这个形式在函数里面直接用ppNewFrame引用可以吗?为什么?

HRESULT CAllocateHierarchy::AllocateName( LPCSTR Name, LPSTR *pNewName )
{
  UINT cbLength;

  if( Name != NULL )
  {
  cbLength = (UINT)strlen(Name) + 1;
  *pNewName = new CHAR[cbLength];
  if (*pNewName == NULL)
  return E_OUTOFMEMORY;
  memcpy( *pNewName, Name, cbLength*sizeof(CHAR) );
  }
  else
  {
  *pNewName = NULL;
  }

  return S_OK;
}

这个也类似,pNewName这个参数。为什么传入时要在前面加个*?这两个参数本身就是指针,为什么一定要在传入时加个*然后在函数里再用*,这样做的必要性是什么?


5

主题

63

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
 楼主| 发表于 2012-9-13 17:08:00 | 显示全部楼层

Re:求教:这段里的参数为什么不直接用指针?

明白了,汗。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 16:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表