float[]
和float*
有什么区别?浮法阵列浮动*
另外,我怎样才能将一个浮点数组转换为float *
?我需要得到一个float *
并打开它,然后应用一个过滤器并将其作为float *
发送到我的FFT方法中,但我不知道该怎么做,因为我不知道它们之间的真正区别。
float[]
和float*
有什么区别?浮法阵列浮动*
另外,我怎样才能将一个浮点数组转换为float *
?我需要得到一个float *
并打开它,然后应用一个过滤器并将其作为float *
发送到我的FFT方法中,但我不知道该怎么做,因为我不知道它们之间的真正区别。
这些点都涉及到C:
a[8]
只是*(a + 8)
的简写;和n
加到指针p
,定义为加上n * sizeof(*p)
。因此,数组与指针的区别在于语义上不同。但是您可以在任何需要指针的地方提供数组的名称,因为它将被转换。
另外,您还可以使用下标语法向任何指针添加偏移量。
Objective-C是C的一个严格超集。所以这些规则也适用于Objective-C中基元类型的使用。
要理解这种区别,请考虑可变性。以下内容无效:
char array[];
char value;
array = &value;
您不能重新分配array
。它是一个数组的名称。 array
本身在运行时不可变,只有其中的东西是可变的。相反以下是有效的:
char *pointer;
char value;
pointer = &value;
您可以经常为你喜欢重新分配pointer
。有一个可变指针,你可以用它指向任何东西。
感谢您的帮助和很好的解释。这真的有助于理解这一点 – smoothumut 2014-10-09 11:52:26
你能帮助我对我的新challange请深深感激 – smoothumut 2014-10-09 12:38:11
数组通常是指向列表的第一个成员的指针。当使用数组[标识符]时,您正在访问*(p +标识符)。
制作一个新的数组将会定义一系列指针紧挨着另一个,这将使它的使用更容易。
您可以在以下方面的int数组:
float array1[100] = { 0 };
float *dataArray = (float*)malloc(sizeof(float) * 100);
float *pointerToFloatArray = array1;
这真的帮了我很多。非常感谢 – smoothumut 2014-10-09 12:18:09
您可以使用C风格的数组,就像这个答案说明:https://stackoverflow.com/a/26263070/3399208,
,但更好的办法 - 使用Objective-C的容器和Objective-C的对象,比如NSNumber的*:
NSArray *array = [@1, @2, @3];
或
NSMutableArray *array = [NSMutableArray array];
NSNumber *number1 = [NSNumber numberWithFloat:20.f];
NSNumber *number2 = @(20.f);
[array addObject:number1];
[array addObject:number2];
这不是我正在寻找,但非常感谢 – smoothumut 2014-10-09 11:06:16
http://c-faq.com/aryptr/ – 2014-10-08 17:21:50
完全一样C.了解C. – 2014-10-08 17:25:28
感谢您的咨询。 – smoothumut 2014-10-09 13:13:23