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

被自各儿定义的函数弄晕了.

2012-08-14 
被自己定义的函数弄晕了....一段解码函数,我把参数定义成了指针的引用BYTE *&DataHandle::DecodeCode(BYTE

被自己定义的函数弄晕了....
一段解码函数,我把参数定义成了指针的引用
 BYTE *&DataHandle::DecodeCode(BYTE *&pSourceBuffer,long& lSourceSize,BYTE *&pDestBuffer)
{
mConfig->pInputBuffer = pSourceBuffer ; //pSourceBuffer :AAC data
mConfig->inputBufferCurrentLength = lSourceSize ; //aac size
mConfig->inputBufferUsedLength = 0;
Int decoderErr;
decoderErr = PVMP4AudioDecodeFrame(mConfig, mDecoderBuf);//解码函数
if (decoderErr==0)
{
memcpy(pDestBuffer,out_buf,4096);//解码输出到pDestBuffer
}
else
{
AfxMessageBox(_T("解码错误!"));
}
return pDestBuffer;
}
于是我调用它,rtpBuff为char*型,char *rtpBuff;
//报错!错误为不能将参数 1 从“BYTE *”转换为“BYTE *&”
BYTE *pDestBuffer = DecodeCode((BYTE*)rtpBuff,plenHeader->data_size,pDestBuffer);//编译器报错!!!!
可是我改成如下就没错了
BYTE *pDestBuffer = DecodeCode((BYTE*&)rtpBuff,plenHeader->data_size,pDestBuffer);//编译器不报错了!!!
指针的引用为参数,那么不就是传个指针进去就行了嘛,为什么还要加个&?????????
求解。。。。

[解决办法]
指针的引用为参数,那么不就是传个指针进去就行了嘛,为什么还要加个&?????????
======

不一样的,传指针引用进去就可以修改原变量的值。这么玩可以达到如下效果:

C/C++ code
BYTE* data;method_to_get_data(data);if (data==NULL) {    // 函数没有给数据}else {    // 函数给了你数据}
[解决办法]
BYTE *DataHandle::DecodeCode(BYTE *pSourceBuffer,long& lSourceSize,BYTE *pDestBuffer)
你这样定义函数接口不行吗?为什么还要加&?如果要改变指针的值就用**,没有见过*&这会混用的
[解决办法]
探讨

指针的引用,这个用法太少见了,太非主流啊,你自己都迷了,会让维护的人想死的。最好不要这么用,写代码是解决问题的,不要制造问题。

[解决办法]
引用生来就是用来解决使用*指针容易出错的问题的,* 和&一般可以替换。*&类似的替代是** 。指针的引用就是指向指针的指针
[解决办法]
探讨

指针的引用,这个用法太少见了,太非主流啊,你自己都迷了,会让维护的人想死的。最好不要这么用,写代码是解决问题的,不要制造问题。

[解决办法]
探讨

我的意思是,函数参数不管是传值还是传指针,都会复制一份参数拷贝...
而我用指针引用,我是想连那份拷贝也省了....
这就是我的想法,欢迎各位指点....
周末啊,各位在否...

[解决办法]
探讨

传指针就不会拷贝,不知道谁给你说的传指针也会拷贝啊?

[解决办法]


用C写程序 = 踩着鸡蛋跳舞
用C++写程序 = 在核弹上踢足球

千万不要被C++的引用弄混了:

1.统一用指针
2.统一用引用
3.只在一些特殊地方混用,并且贴上所有需要的注释和说明

热点排行