cym0359 2016-10-09 08:03 采纳率: 0%
浏览 3089

(BYTE *)buf 和 (BYTE *)&buf 的区别是啥?

void CpyData(BYTE * pOutbuf, T_PDA_UHFMessage req );
pOutbuf 是个字节数组,req 是个结构体

CpyData((BYTE *)buf, req); 和 CpyData((BYTE *)&buf, req); 的区别是啥?

  • 写回答

1条回答 默认 最新

  • 家人是最好的礼物 2016-10-09 08:37
    关注

    一个是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是不会改变的。

    评论

报告相同问题?