为啥这样传参不行?

为什么这样传参不行???
写了个函数,用来加载png资源,如下:
void loadpng(DWORD id,Image* img)
{
HRSRC hrsc=FindResource(0,MAKEINTRESOURCE(id),"png");
HGLOBAL hglb_rsc=LoadResource(0,hrsc);
DWORD len=SizeofResource(0,hrsc);

HGLOBAL hglb_mmr=GlobalAlloc(0,len);
void* pmmr=GlobalLock(hglb_mmr);
memcpy(pmmr,hglb_rsc,len);

IStream* is;
CreateStreamOnHGlobal(hglb_mmr,0,&is);

img=Image::FromStream(is);

FreeResource(hglb_rsc);
GlobalUnlock(hglb_mmr);
GlobalFree(hglb_mmr);
}
但是这样img指针还是0,如果写成这样:
void loadpng(DWORD id,Image*& img)

就可以了。
问题:
1、Image*& img是什么参数,我怎么从来不见过?
2、为什么Image* img就行不通?

------解决方案--------------------

void loadpng(DWORD id,Image*& img)
//传进来的是指针的引用,对指针操作是有效的

void loadpng(DWORD id,Image* img)
//传进来的是指针,对指针的操作无效,对指针的内容操作有效的


//记住一点:传进来的地址也是一个数,它也是拷贝一份出来进行工作
// 因为传地址进来操作内容,改变而达到目的