抱歉我的新手问题。请不要投票给我,因为我正在学习C.我是一名经验丰富的其他语言程序员,但不是C语言。我正在尝试学习C同时我正在尝试理解一个名为Novaine的iOS库,在Github上
该库有一个带有以下签名的模块:
Novocaine *audioManager = [Novocaine audioManager];
[audioManager setInputBlock:^(float *newAudio, UInt32 numSamples, UInt32 numChannels) {
}];
那么,内部块正在接收numSamples
,numChannels
和newAudio
,而newAudio
是浮点指针的类型?
这是什么类型的对象?一系列花车?如果这是一个数组,我该如何访问它的值?我怎么知道它有多少元素?
答案 0 :(得分:0)
这是浮点值的指针。这里没什么奇怪的。通常用于指向内存中的某些区域。你不知道这个的大小。可能是单个浮点数,但也可以是更大,连续的空间。
您不知道那里存储的对象类型。 float
并不意味着浮动存储在那里。它也可以声明为void *
。同样,它只是记忆中的一个空间。通过键入float *
,您只需给编译一个提示,当您移动newAudio
指针(执行或示例newAudio ++
)时,它会将指针移动sizeof(float)
个字节。
基于方法指纹,我假设这是指向某个缓冲区的第一个元素的指针,其大小可能是numSamples
* numChannels
* size of single sample
应首先分配这部分内存,以确保它为您保留:
float *newAudio = calloc(numSamples * numChannels, sizeof(float));