基本的に私はを返すクラスメソッドを持っていますfloat array
. を返すと、static array
必要な配列のサイズは入力サイズに依存するため、入力パラメータによっては大きすぎるか小さすぎるという問題があります。返品した場合float array[arraysize]
、サイズの問題は解決しましたが、他の問題があります。
たとえば、の各要素にnon-static float array
個別に対処するとします。
NSLog(@"array[0] %f array[1] %f array[2] %f",array[0],array[1],array[2]);
配列の正しい値を出力します。ただし、代わりにループを使用すると、たとえば
for (int i = 0; i < 3; i++)
{
NSLog(@"array[%i] %f",i,array[i]);
}
非常に奇妙な数字がいくつか得られます (奇妙なことに、最後のインデックスは別として)。この 2 つのことで異なる結果が生じるのはなぜでしょうか。単純に a を返すのは悪い習慣であることは承知していますnon static float
が、それでも、配列をアドレス指定するこれら 2 つの方法は同じように見えます。
クラス メソッドからの関連コード (非静的バージョンの場合)...
float array[arraysize];
//many lines of code later
if (weShouldStoreValue == true) {
array[index] = theFloat;
index = index + 1;
}
//more lines of code later
return array;
(float*) を返すことに注意してください。