gpt4 book ai didi

c++ - 为什么要使用像 `&myArray[i]` 这样的数组元素的地址?二维数组

转载 作者:行者123 更新时间:2023-12-02 09:51:59 27 4
gpt4 key购买 nike

有一些代码可以创建一个像这样的浮点数组:

mData = new float[channelCount * maxFrames];
然后它确实
memcpy(&mData[sampleIndex],
buffer,
(numSamples * sizeof(float)));
&mData[sampleIndex] 是什么意思意思是?好吧,我们有一个浮点数组,我们取该数组的一个元素,然后取该元素的地址。该元素的地址不会是 mData + sampleIndex吗? ?
如果我想改变 memcpy通过for循环?我这样做了,它奏效了:
            for (int i=0; i< numSamples * sizeof(float); i++) {
(&mData[sampleIndex])[i] = buffer[i];
}
但我不知道是什么 (&mData[sampleIndex])[i]方法。应该是 mData + sampleIndex + i ?
这段代码应该可以用来记录 microfone wav 数据,所以我们应该能够在多个 channel 中存储东西。此代码如何管理此类 channel ?

最佳答案

What does &mData[sampleIndex] mean? Well, we have a float array, we take an element of that array, and then take the address of that element. Wouldn't the address of that element be mData + sampleIndex?


是的。

What if I wanted to change memcpy by a for loop?


你的循环不完全做同样的事情。 memcpy正在复制 numSamples * sizeof(float)循环复制时的字节数 numSamples * sizeof(float) float 。由于浮点数由多个字节组成(在大多数系统上),这可能会导致缓冲区溢出。

but I don't know what (&mData[sampleIndex])[i] means. Should it be mData + sampleIndex + i?


不太一样。 (&mData[sampleIndex])[i]将等于 *(mData + sampleIndex + i)

How this code manages such channels?


此代码只是将值从一个数组复制到另一个数组。它不“管理”任何东西。

关于c++ - 为什么要使用像 `&myArray[i]` 这样的数组元素的地址?二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63893296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com