首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将结构数据保存到void*变量

将结构数据保存到void*变量
EN

Stack Overflow用户
提问于 2012-06-16 23:56:09
回答 4查看 327关注 0票数 0

我的工作是在DSP处理器上实现BFSK算法,需要在LINUX上使用预定义的DSP底层文件来模拟实现。输入数据以浮点数组的形式出现。从输入中逐个提取各个比特。在typdef结构的fprm中生成调制输出,该结构由两个浮点变量(实部和虚部,因为调制数据是复数基带信号)组成。但DSP仿真需要将输出保存到空指针数组中。这不能改变,因为DSP需要它以空指针的形式存在。该结构的定义如下:

代码语言:javascript
运行
复制
typedef struct {
float re;
float im;
}complex_float;

我可以使用memcpy将数据复制到空指针中:

代码语言:javascript
运行
复制
sigbuf=(float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));

memcpy(sigbuf, comSig, (bitsPerBlk*sigLen*sizeof(complex_float)));

comSig是保存输出的空指针数组,complex_float是保存调制输出的sigbuf数组。问题是我不能访问sigbuf数组的个别值。我也试过了

代码语言:javascript
运行
复制
sigbuf=(complex_float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));

但它仍然不起作用。

如果有人能帮助我,那将对我很有帮助。

谢谢,安舒

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-17 14:58:01

我将在这里进行猜测。为什么不将comSig复制到sigBuf,然后将其传递给您的API呢?

代码语言:javascript
运行
复制
complex_float *sigBuf = malloc(TOTAL_SIZE_OF_COMSIG);
memcpy(sigBuf, comSig, TOTAL_SIZE_OF_COMSIG);

我不知道你的函数的文档,但听起来你的API接受了一个空指针,指向某个数据缓冲区,可能还有它的长度或元素的数量。

代码语言:javascript
运行
复制
dsp_api(sigBuf, sigBufSize);

我认为你误解了什么是空指针,以及你的函数想要什么。空指针只是指向某些数据的通用指针。它是函数接收任何数据的方式,然后可能将其转换为complex_float结构以对数据进行操作。

作为未来的参考,为什么你不能取消引用一个空指针是因为它没有大小。你必须将它转换为一个类型,然后你才能取消对它的引用。

票数 2
EN

Stack Overflow用户

发布于 2012-06-17 00:06:54

如果sigbuf的类型为(void *),则您的代码行

代码语言:javascript
运行
复制
sigbuf=(complex_float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));

应该能够更改为

代码语言:javascript
运行
复制
sigbuf=(void *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));

因为malloc的左边是一个简单的铸型!

票数 0
EN

Stack Overflow用户

发布于 2012-06-17 01:52:45

很抱歉,我的错是我没能清楚地解释我的观点。声明如下

代码语言:javascript
运行
复制
void *sigbuf;
complex_float *comSig;

complex_float

是一个由两个浮动元素组成的结构。

sigbuf

将存储调制后的数据,然后将其进一步传递给传输系统。

comSig

是一个complex_float数组(基本上是正弦和余弦函数输出的数组)。

DSP基础设施需要调制输出在

sigbuf

已计算并保存在

comSig

。somSig和sigbuf都是在数字信号处理基础设施中预先定义的。

我的问题是,我可以将整个comSig复制到sigbuf数组中,但不能访问sigbuf数组的各个元素。

我能够通过全局指针传递comSig数组本身的地址来绕过这个问题的任何方法variable.The DSP基础设施都提供了这样做的自由。所以,现在这个问题似乎已经解决了。再次感谢,安舒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11064964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档