配列変数とは同じ型の変数をたくさん持つ、コインロッカーのようなものです。
配列変数はint、string、float、bool、構造体型、関数型のいずれかでのみ可能です。別々の型を一つの配列に入れることはできません。
宣言
配列変数はローカルまたはグローバルで宣言をして使用しますが、配列そのものに代入はできません。
また、配列変数を関数の戻り値として使用することもできません。
ただし、引数refで使用することはできますし、構造体に入れた場合、構造体そのものを戻り値にすることで配列もreturn先へ飛ばせます。
宣言:
array@扱う型@次元数 配列変数名[(const int) ロッカーの数];
ロッカー、「要素」と云いますが、これを使う場合は「配列変数名[(int) 番号]」というふうにします。
番号は0から始まります。(ロッカーの数を1にしたなら[0]から。100なら[00]-[99]まで。)
ロッカーへの代入は出来ます。
void game_main(void)
{
array@int@1 配列じゃい。[1];
配列じゃい。[0] = 12;
N(配列じゃい。[0]);A;
int nX = 0;
N(配列じゃい。[nX]);A;
}
//12と出力されます。
次元数
「次元」とは配列のロッカーが一列でなく、何列になっているかを表したものです。何次元でもいけますが、たくさん宣言しすぎるとそれだけメモリーを食います。
要素の数は、次元の要素数×要素数...(たとえば[2][2][2]なら8)だと思います。
void game_main(void)
{
array@int@2 配列じゃい。[2][2];
配列じゃい。[0][0] = 12;
配列じゃい。[1][0] = 14;
配列じゃい。[0][1] = 26;
配列じゃい。[1][1] = 10;
N(配列じゃい。[0][0] + 配列じゃい。[1][0]);A; } //30と出力されます。
一括
配列変数ではすべての要素に対して何かしたい時とかもあります。
その場合、forでループさせるのが一般的だと思います。
int nL;
for (nL = 0;nL < 配列変数名.Numof(); nL++)
{
asX[nL] させたい処理...
}
- 例:string型の配列をint型の配列に入れたい(string→int変換、一次元同士)
void ArraySNchange(ref array@string@1 asX, ref array@int@1 anX)
int nL;
for (nL = 0;nL < asX.Numof(); nL++)
{
asX[nL].Int = anX[nL];
}
return;
}
やりようによっては二次元、三次元配列同士のコピーなどもできます。型ごとに作るのは大変ですが。