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