首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为啥这样传参不行?

2013-08-13 
为什么这样传参不行???写了个函数,用来加载png资源,如下:void loadpng(DWORD id,Image* img){HRSRC hrscF

为什么这样传参不行???
写了个函数,用来加载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)
//传进来的是指针,对指针的操作无效,对指针的内容操作有效的


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

热点排行