为啥这样传参不行?
为什么这样传参不行???
写了个函数,用来加载png资源,如下:
就可以了。
问题:
1、Image*& img是什么参数,我怎么从来不见过?
2、为什么Image* img就行不通?
------解决方案--------------------
写了个函数,用来加载png资源,如下:
void loadpng(DWORD id,Image* img)但是这样img指针还是0,如果写成这样:
{
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);
}
void loadpng(DWORD id,Image*& img)
就可以了。
问题:
1、Image*& img是什么参数,我怎么从来不见过?
2、为什么Image* img就行不通?
------解决方案--------------------
void loadpng(DWORD id,Image*& img)
//传进来的是指针的引用,对指针操作是有效的
void loadpng(DWORD id,Image* img)
//传进来的是指针,对指针的操作无效,对指针的内容操作有效的
//记住一点:传进来的地址也是一个数,它也是拷贝一份出来进行工作
// 因为传地址进来操作内容,改变而达到目的