こんにちは､ ようこそ｡
この講義では､ 可変長配列について説明します｡
具体的にはどのようなことでしょうか｡
まあ､ これはC99で追加された新機能だと思うんですけどね｡
しかし､ これまで私たちが配列について知っていることは､
多次元であることと､ 複数のデータ要素を基本的に1つの変数に格納できるクールな機能であることのほかに､
サイズが固定であることです｡
そのサイズを指定すると､ ハードコードされた定数を使用しなければならない｡
サイズを指定する変数を宣言すると､
その通りになります｡
可変長配列というと､ ちょっと誤解を招きそうですね｡
配列のサイズを動的に変更するということではありません｡
サイズはそのままで､ 変数を使えるようになりました｡
ですから､ 可変長配列の変数というのは､ 作った後に配列の長さを変更できるという意味ではありません｡
その意味は､ その配列に使用する変数を設定することができるようになったということです｡
ということで､ VLAは作成後も同じ大きさを維持することになります｡
変数配列は､ 配列作成時にサイズと配列を変数で指定することができます｡
だから､ 変数を使えばいい､ それが本当の意味です｡
それほど使い勝手が良くないのではと思われます｡
でも実は､ 本当に追加されたのは､ 本当に既存のライブラリや他の言語に役立つからということだけでした｡
そこで､ C99ではこの新機能を導入し､ 利用されているので､ そのことを紹介したいと思います｡
簡単に触れるだけで､ 詳しい使用例を紹介するつもりはない｡
cについて調べていると､ 可変長配列という言葉をよく目にするので､
その存在をお伝えしたかっただけなのです｡
それを見て､ 配列の勉強をしたのにこの話題には触れなかったのはどういうことだ､
と言われたら困りますしね｡
そこで､ 主にcを数値計算のためのより良い言語とするために導入された｡
VLAとは､ 可変長配列のことで､ Fortranの数値計算ルーチンの既存のライブラリをcに変換するのが非常に簡単になります｡
そのために追加されたわけです｡
ですから､ もしあなたがFortranプログラマーなら､ 移行するとき､
あるいはコードを変換するときに､ これを使うのがよいでしょう｡
Fortranのコードをcに変換しようとして移植している場合､
これを使用するとよいでしょう｡
VLA の宣言で初期化することはできない｡
可変長配列の場合は､ 初期化がないんですね｡
ここでは､ 配列の宣言時に適用できる有効なサイズを紹介します｡
そこで､ 2つの変数とmを宣言することができます｡
そして､ 下の方にあるfloat 8とfloat a9というのは､ 配列のサイズで宣言すると､
それらの変数が使えるようになるんですね｡
C99以前は許されなかったが､ 今は許されるようになった｡
それがVLA､ 可変長配列だ｡
配列の内部で使用する変数を指定する｡
実行時にサイズを変えているわけではない
この他にも､ 配列の有効な宣言の例がありますので､ 注意してみてください｡
配列に5など特定のサイズを設定するのであれば､ 全く問題ありません｡
配列のサイズを代入する際に､ 式を使うことができます｡
だから､ 次の例では5×2＋1､ でいいんです｡
もうひとつ注目すべきは､ sizeof演算子を使っていることです｡
これもまったく問題ありません｡
Sizeof intは実行するマシンによって4か8を返すことになっていて､
それに1を足しているのですが､ 全く問題ありません｡
配列の宣言の中に負の数を入れること､
それはできない｡
マイナス4というのはないんです｡
配列のサイズは0より大きくなければならない｡
そのため､ ゼロも効かない｡
2. 5 フロートをつける､ それもできない､ 意味がない｡
サイズ2の配列はどのように作成すればよいのでしょうか｡ 5.
ただし､ 2.をつけると 5を角括弧の中に入れて､ intにキャストすればOKです｡
今回も可変長配列に時間をかけたくなかったので､ その概念を紹介したいと思います｡
この言葉を聞いた人は､ それが何であるかを知っているはずだ｡
サイズ宣言時に変数を配列に代入する｡
本当に既存のFortranライブラリとの互換性のために導入されただけです｡
ありがとうございます｡