次のように定義されたObjectiveCのC配列があります。
id keysArray;
次に、ifブロックで、条件に基づいて配列を再定義したいと思います。
if (somethingIsTrue){
id keysArray[4][3];
}
else {
id keysArray[6][1];
}
次に、ifブロックの外側で、配列にアクセスすると、keysArray
が存在しないというエラーが表示されます。
ありがとう。
次のように定義されたObjectiveCのC配列があります。
id keysArray;
次に、ifブロックで、条件に基づいて配列を再定義したいと思います。
if (somethingIsTrue){
id keysArray[4][3];
}
else {
id keysArray[6][1];
}
次に、ifブロックの外側で、配列にアクセスすると、keysArray
が存在しないというエラーが表示されます。
ありがとう。
これは、ifのスコープを離れると、そのスコープ内で定義されているすべてのローカル変数が破棄されるためです。これを行う場合は、動的割り当てを使用する必要があります。Objective Cのやり方はわかりませんが、通常のCではmallocを使用します。
ではC
、一度作成した配列はサイズを変更できません。malloc()
そのためには、ポインターと友達が必要です。
「C99
可変長配列」( VLA ) と呼ばれる新しい機能があり、実行時に定義された長さの配列を使用できます (ただし、オブジェクトの期間中は固定されます)。
while (1) {
/* C99 only */
int rows = 1 + rand() % 10; /* 1 to 10 */
int cols = 1 + rand() % 10; /* 1 to 10 */
{
int array[rows][cols];
/* use array, different sizes every time through the loop */
}
}