zoukankan      html  css  js  c++  java
  • 指针赋值

    代码如下:

    LONGLONG llValue;
    BYTE* pbValue;

    HRESULT hr = GetValue("Value", &pbValue);
    if (SUCCESSED(hr))
    {
        llValue = (LONGLONG)(*pbValue);
    }

    执行之后发现获得的llValue值比理论值小很多,经过分析发现犯了个弱智的错误:
    ———对指针pbValue先取值后转换类型
    pbValue是BYTE型指针,取值后将pbValue指向的内存中一字节数据取出,然后类型转换时实际是将该一字节数据通过补0填充成LONGLONG类型(即获得的llValue中只有一字节是内存中的数据,其余都是填充的0)。

    正确的赋值方式应该是:
    llValue = *(LONGLONG*)pbValue;
    即先类型转换,再赋值。只有这样才能将LONGLONG类型对应的内存中的数据完整取出来。

  • 相关阅读:
    滚动条滚动方向
    阶乘函数-尾递归
    返回顶部
    CommonJS
    vuessr
    随机字符串
    indexedDB
    深层次选择器
    Vue3.0简单替代Vuex
    shell 学习笔记
  • 原文地址:https://www.cnblogs.com/sizzle/p/1182386.html
Copyright © 2011-2022 走看看