" float * newAudio"

时间:2015-12-13 19:52:10

标签: objective-c

抱歉我的新手问题。请不要投票给我,因为我正在学习C.我是一名经验丰富的其他语言程序员,但不是C语言。我正在尝试学习C同时我正在尝试理解一个名为Novaine的iOS库,在Github上

该库有一个带有以下签名的模块:

Novocaine *audioManager = [Novocaine audioManager];

[audioManager setInputBlock:^(float *newAudio, UInt32 numSamples, UInt32 numChannels) {

}];

那么,内部块正在接收numSamplesnumChannelsnewAudio,而newAudio是浮点指针的类型?

这是什么类型的对象?一系列花车?如果这是一个数组,我该如何访问它的值?我怎么知道它有多少元素?

1 个答案:

答案 0 :(得分:0)

这是浮点值的指针。这里没什么奇怪的。通常用于指向内存中的某些区域。你不知道这个的大小。可能是单个浮点数,但也可以是更大,连续的空间。

您不知道那里存储的对象类型。 float并不意味着浮动存储在那里。它也可以声明为void *。同样,它只是记忆中的一个空间。通过键入float *,您只需给编译一个提示,当您移动newAudio指针(执行或示例newAudio ++)时,它会将指针移动sizeof(float)个字节。

基于方法指纹,我假设这是指向某个缓冲区的第一个元素的指针,其大小可能是numSamples * numChannels * size of single sample

应首先分配这部分内存,以确保它为您保留:

float *newAudio = calloc(numSamples * numChannels, sizeof(float));