「可変長配列」の版間の差分
削除された内容 追加された内容
en:Variable-length array 2017-08-15T13:43:04版を訳出 |
誤訳を修正。 |
||
1行目:
[[プログラミング (コンピュータ)|プログラミング]]において、'''可変長配列'''(かへんちょうはいれつ、{{lang-en|variable-length array}}: VLA)とは、[[コンパイル]]時ではなく実行時に長さが決定される{{仮リンク|自動変数|en|Automatic variable|label=自動記憶期間}}の[[配列]][[データ構造]]である<ref name=cray>{{cite web |url=http://docs.cray.com/books/004-2179-001/html-004-2179-001/z893434830malz.html|title=Variable Length Arrays|publisher=|accessdate=2017-09-21}}</ref>。
VLAに対応している[[プログラミング言語]]には、[[Ada]]、[[ALGOL#ALGOL 68|ALGOL 68]](行は固定)、[[APL]]、[[C99]](
==メモリ==
===割り当て===
VLAによって、基本的なメモリ割り当ての問題がユーザーに対して
例えば、[[GNUコンパイラコレクション|GNU Cコンパイラ]]は、スタック上にVLAのメモリを割り当てる<ref>{{cite web |url=https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html|title=Code Gen Options - The GNU Fortran Compiler|publisher=|accessdate=2017-09-21}}</ref>。Cの他のオブジェクトと同様、VLAは<code>SIZE_MAX</code>バイトに制限されている<ref>§6.5.3.4 and §7.20.3 of the C11 standard (n1570.pdf)</ref>。
===変数アクセス===
いくつかのプログラミング言語では、[[ポインタ (プログラミング)|ポインタ]]を介してVLAにアクセスすることができるが、不完全な型と見なされるため、デリファレンス([[間接参照
==例==
27行目:
</source>
C99では、関数呼び出し
以下は[[Ada]]における同じ例である。Adaの配列は境界を持っている。従って、長さをProcess関数に渡す必要はない。
44行目:
</source>
[[Fortran|Fortran 90]]での同等の関数は次の通りである(コンパイル時にプロシージャ・インターフェ
<source lang="fortran">
61行目:
</source>
一方、関数がFortran 90以前の呼び出しインターフェ
<source lang="fortran">
79行目:
</source>
次の[[COBOL]]の
<syntaxhighlight lang="cobolfree">
91行目:
</syntaxhighlight>
次の[[C Sharp|C#]]の
<source lang="csharp">
102行目:
==動的割り当てと自動割り当て==
[[Java]]や[[.NET Framework]]などの言語は、可変長配列を提供するとはみなされない。これらの言語では、全ての配列オブジェクト
==脚注==
|