c++ - 为什么要获取像 `&myArray[i]` 这样的数组元素的地址?二维数组
问题描述
有一些代码可以创建一个像这样的浮点数组:
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 数据,所以我们应该能够在多个通道中存储东西。此代码如何管理此类渠道?
解决方案
&mData[sampleIndex] 是什么意思?好吧,我们有一个浮点数组,我们取该数组的一个元素,然后取该元素的地址。该元素的地址不会是 mData + sampleIndex 吗?
是的。
如果我想通过 for 循环更改 memcpy 怎么办?
你的循环不完全做同样的事情。memcpy
正在复制numSamples * sizeof(float)
字节,而您的循环正在复制numSamples * sizeof(float)
浮点数。由于浮点数由多个字节组成(在大多数系统上),这可能会导致缓冲区溢出。
但我不知道 (&mData[sampleIndex])[i] 是什么意思。应该是 mData + sampleIndex + i 吗?
不太一样。(&mData[sampleIndex])[i]
将等于*(mData + sampleIndex + i)
此代码如何管理此类渠道?
此代码只是将值从一个数组复制到另一个数组。它不“管理”任何东西。
推荐阅读
- maven - 使 pom.xml 中的 com.here.platform sdk 版本通用
- android - 更新 HAXM 后,使用 Android API 28 的模拟器无法启动
- angular - Angular 2中的类模型不起作用
- iphone - 从 SideMenu 打开 UITabbar 内的 UIViewController
- c++ - 在 Qt Blocking Master 示例中使用 Mutex
- yii2 - Yii2 从类内访问类
- angular - Angular 6 更新后 this._zone.onMicrotaskEmpty undefined
- android - 有没有办法在android上只重用xml的顶部和底部?
- oracle - oracle 12c 中的 Oracle InProc 服务器 5.0 类型库
- android - 滚动时自动检查列表视图中的开关