OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1992|回复: 2

请教大家一个C语言程序问题

[复制链接]

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-5-7
在线时间
21 小时
发表于 2019-10-17 11:22:10 | 显示全部楼层 |阅读模式
10金钱
有一个函数为DLPSPEC_ERR_CODE dlpspec_scan_interpret(const void *pBuf, const size_t bufSize,scanResults *pResults)/**
* Function to interpret a serialized scan data blob into a results struct
*
* @param[in]   pBuf        Pointer to serialized scan data blob
* @param[in]   bufSize     buffer size, in bytes
* @param[out]  pResults    Pointer to scanResults struct
*
* @return      Error code
*
*/
{
    uScanData *pData;
    DLPSPEC_ERR_CODE ret_val = (DLPSPEC_PASS);
    SCAN_TYPES type;
    void *pCopyBuff = (void *)malloc(bufSize);

    if(pCopyBuff == NULL)
        return (ERR_DLPSPEC_INSUFFICIENT_MEM);

    memcpy(pCopyBuff, pBuf, bufSize);

    ret_val = dlpspec_scan_read_data(pCopyBuff, bufSize);
    if(ret_val < 0)
    {
        goto cleanup_and_exit;
    }

    pData = (uScanData *)pCopyBuff;
    if(pData->data.header_version != CUR_SCANDATA_VERSION)
    {
        ret_val = ERR_DLPSPEC_FAIL;
        goto cleanup_and_exit;
    }
    memset(pResults,0,sizeof(scanResults));

    type = dlpspec_scan_data_get_type(pData);

    if(type == HADAMARD_TYPE)
    {
        ret_val = dlpspec_scan_had_interpret(pCopyBuff, pResults);
    }
    else if(type == COLUMN_TYPE)
    {
        ret_val = dlpspec_scan_col_interpret(pCopyBuff, pResults);
    }
    else if(type == SLEW_TYPE)
    {
        ret_val = dlpspec_scan_slew_interpret(pCopyBuff, pResults);
    }
        else
        {
                ret_val = ERR_DLPSPEC_INVALID_INPUT;
        }

    cleanup_and_exit:
    if(pCopyBuff != NULL)
            free(pCopyBuff);

        return ret_val;
}
这个是一个反序列化的函数,
我在调用这个函数的时候应该怎么调用呢,我一直没有搞明白pBuf这个输入是怎么回事,如果pBuf是一个指向一维数组的指针,在调用这个函数的时候,传入的是数组的首地址呀,有些搞不明白,请求大佬们解惑。

感谢!

最佳答案

查看完整内容[请看2#楼]

pBuf就是一个数组的首地址指针,你将这个地址传进函数后,函数就可以修改这个指针指向的内容了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-9-2
在线时间
28 小时
发表于 2019-10-17 11:22:11 | 显示全部楼层
pBuf就是一个数组的首地址指针,你将这个地址传进函数后,函数就可以修改这个指针指向的内容了。
回复

使用道具 举报

12

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
922
金钱
922
注册时间
2018-7-18
在线时间
385 小时
发表于 2019-10-17 19:13:59 | 显示全部楼层
没看明白你在疑惑什么 pBuf确实是数组的首地址,后面的bufSize 说名了这个数组的大小  那么就可以通过地址访问数组的所有的元素了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-1 02:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表