如何在c中将2个浮点数组合并为1个结构数组

如何在c中将2个浮点数组合并为1个结构数组,c,arrays,pointers,struct,C,Arrays,Pointers,Struct,我想知道是否有可能将2个浮点数组合并成1个结构数组 下面是我的示例代码 typedef struct { float left; float right; } t_stereo; int main(int argc, const char * argv[]) { float *leftBuf = (float[4]){1,2,3,4}; float *rightBuf = (float[4]){5,6,7,8}; t_stereo *stereo;

我想知道是否有可能将2个浮点数组合并成1个结构数组

下面是我的示例代码

typedef struct {
    float left;
    float right;
} t_stereo;

int main(int argc, const char * argv[]) {

    float *leftBuf = (float[4]){1,2,3,4};
    float *rightBuf = (float[4]){5,6,7,8};

    t_stereo *stereo; //how to store *leftBuf and *rightBuf into *stereo?

    return 0;
}
所以我基本上希望*立体声同时包含*leftBuf和*rightBuf的数据


我想知道是否有简单的解决办法。

我想最简单的解决办法是:

t_stereo *stereo = malloc(sizeof(t_stereo) * DATALEN);

int i;
for (i = 0; i < DATALEN; i++)
{
    stereo[i].left = leftBuf[i];
    stereo[i].right = rightBuf[i];
}
t_立体声*立体声=malloc(sizeof(t_立体声)*DATALEN);
int i;
对于(i=0;i

其中,
DATALEN
定义了缓冲区的长度

我认为最简单的解决方案是:

t_stereo *stereo = malloc(sizeof(t_stereo) * DATALEN);

int i;
for (i = 0; i < DATALEN; i++)
{
    stereo[i].left = leftBuf[i];
    stereo[i].right = rightBuf[i];
}
t_立体声*立体声=malloc(sizeof(t_立体声)*DATALEN);
int i;
对于(i=0;i

其中
DATALEN
定义了缓冲区的长度

您需要执行的操作。简而言之

function toStereo (left, right)

 - loop for each left, right sample.
    - store left sample in left channel, 
    - store right sample in right channel.
 - end loop


你需要做什么。简而言之

function toStereo (left, right)

 - loop for each left, right sample.
    - store left sample in left channel, 
    - store right sample in right channel.
 - end loop


为什么malloc和loop不是选项?代码将用于处理音频缓冲区。所以我在寻找最快的解决方案。那么你有一个慢的解决方案吗?请出示。考虑一下吧,因为这听起来好像你偏离主题了。展示你的代码,并要求进行以速度为中心的审查。这是最快的通用解决方案。或者将数据预交织。使用malloc和loop是最快的解决方案?为什么malloc和loop不是选项?代码将用于处理音频缓冲区。所以我在寻找最快的解决方案。那么你有一个慢的解决方案吗?请出示。考虑一下吧,因为这听起来好像你偏离主题了。展示你的代码,并要求进行以速度为中心的审查。这是最快的通用解决方案。或者将数据预交织。使用malloc和loop是最快的解决方案?