我正在研究的学习资源中有一段代码。我遇到了一些与数组相关的语法,如果有人能向我解释,我将不胜感激。
1)
AudioBufferList *bufferList;
bufferList = (AudioBufferList *) malloc (
sizeof (AudioBufferList) + sizeof (AudioBuffer) * (channelCount - 1)
);
第1行我理解。我不明白的是来自sizeof
的所有内容。我知道的唯一价值是channelcount
。 sizeof
在这里做什么以及AudioBufferList
和AudioBuffer
可以传递给它的大小值是多少?有不变的价值观吗?
2)
bufferList->mNumberBuffers = channelCount;
// initialize the mBuffers member to 0
AudioBuffer emptyBuffer = {0};
size_t arrayIndex;
for (arrayIndex = 0; arrayIndex < channelCount; arrayIndex++) {
bufferList->mBuffers[arrayIndex] = emptyBuffer;
}
// set up the AudioBuffer structs in the buffer list
bufferList->mBuffers[0].mNumberChannels = 1;
bufferList->mBuffers[0].mDataByteSize = totalFramesInFile * sizeof (AudioUnitSampleType);
bufferList->mBuffers[0].mData = soundStructArray[audioFile].audioDataLeft;
if (2 == channelCount) {
bufferList->mBuffers[1].mNumberChannels = 1;
bufferList->mBuffers[1].mDataByteSize = totalFramesInFile * sizeof (AudioUnitSampleType);
bufferList->mBuffers[1].mData = soundStructArray[audioFile].audioDataRight;
}
->
做什么?
size_t
是什么意思?
同样是
mBuffers
某种系统常数?
答案 0 :(得分:3)
答案 1 :(得分:1)
这几乎只是c语法,如果你对这段代码感到困惑,那么你应该对c有一个很好的参考。我可以推荐一个很好的参考:C A Reference Manual.
,而不是解释各个位答案 2 :(得分:0)
正如其他一些海报所指出的,这比客观C更多。抓住一本好的C入门书(K&amp; R的C书总是一个不错的选择)可能会有所帮助。但是,回答一些问题:
我不明白的是“sizeof”的所有内容。我知道的唯一价值是“channelcount”。 sizeof在这里做什么以及AudioBufferList和AudioBuffer可以传递给它的大小值是多少?有不变的价值观吗?
sizeof
是一个C运算符(尽管它看起来像一个函数),它返回给定数据类型的字节大小。 malloc
是一个分配内存的函数,因此该行基本上是“为AudioBufferList
,AudioBuffer
分配足够的内存,以及我需要的通道,并返回指向已分配的内存记忆区域“。
“ - &gt;”是什么办?
它通过指针获取结构的成员。在C中,struct有点像Objective-C对象:它有成员,它们基本上就像Objective-C中的实例变量。在Objective-C中,如果要调用方法myValue
,则需要[obj myValue]
;在C中,如果你有一个指向结构的指针并希望获得值my_value
,那么你需要obj->my_value
,这与(*obj).my_value
基本相同,这就是说“得到obj
指向的对象,并在其中找到成员my_value
。
“size_t”是什么意思?
size_t
是一种常见的C数据类型。它在大多数平台上都是“typedef”,是unsigned int
或unsigned long
,它用于以独立于平台的方式表示对象的大小。
“mBuffers”也是某种系统常量吗?
没有;它是bufferList
的成员(请记住,有点像实例变量),可能是AudioBufferList
数据类型。
答案 3 :(得分:0)
从上面提到的伟大评论和阅读开始,这是必须学习的,也许不值得一提的是您尝试理解的代码是 CoreAudio 代码,一个完全用 plain-C 编写的API,虽然它本身远非普通。
您可能会发现有助于阅读的其他文献可能是:
Adamson / Avila:学习核心音频 适用于Mac和iOS的音频编程动手指南
ISBN-13:978-0321636843
ISBN-10:0321636848
希望这可以促进你的学习曲线。