void CpyData(BYTE * pOutbuf, T_PDA_UHFMessage req );
pOutbuf 是个字节数组,req 是个结构体
CpyData((BYTE *)buf, req); 和 CpyData((BYTE *)&buf, req); 的区别是啥?
void CpyData(BYTE * pOutbuf, T_PDA_UHFMessage req );
pOutbuf 是个字节数组,req 是个结构体
CpyData((BYTE *)buf, req); 和 CpyData((BYTE *)&buf, req); 的区别是啥?
一个是BYTE*指针,一个是(BYTE*)的引用啊。指针传递也只是拷贝传递。
比如: 事先定义一个变量var
BYTE* ptr=&var;//&ptr为0000 0000 ptr=1111 1111 (地址纯粹就是为了好看,没有实际意义,当然ptr的值也就是)
CpyData((BYTE*)buf,req)
{
//这里个&buf就不是0000 0000,但是 buf是1111 1111. 这就是拷贝传递参数 值相同,但是值的地址不同
}
CpyData((BYTE*)&buf,req)
{
//这里的引用传递,跟那个ptr就是同一个东西。所以
//&ptr=0000 0000, ptr=1111 1111
}
引用的优点,如果要修改结构体或者类BYTE的指针的指向,就得使用&引用,要不然就要使用**指针的指针。明显引用看起来优雅的多。
在非引用在函数里,buf=newptr;在函数外面是的buf是不会改变的。