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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题