問題タブ [array-initialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 動的割り当てなしの実行時の配列サイズは許可されますか?
私は数年間 C++ を使用しており、今日いくつかのコードを見ました。
GCC の下でコンパイルされます。
またはなしで実行時にサイズを決定するにはどうすればよいですnew
かmalloc
?
再確認するために、いくつかをグーグルで検索しましたが、私のものと同様のコードはすべて、ストレージサイズエラーを引き起こすと主張されています。
Deitel の C++ How To Program p. 一般的なプログラミング エラー 4.5 の 261 の状態:
自動配列と静的配列のサイズを宣言するために使用できるのは、定数のみです。
私を啓発してください。
java - {a、b、c}をメソッドに渡しても機能しないのはなぜですか?
初期化リスト{...}をコンストラクターに渡そうとしましたが、機能しませんでした。代わりにメソッドローカル変数(int [])で宣言すると、問題なく機能しました。
何故ですか?
c++ - C / C ++で配列を初期化するのは良い習慣ですか?
最近、テスト結果を検証するために2つのファイル(ゴールデンと期待)を比較する必要があり、両方のファイルに書き込まれたデータが同じであるにもかかわらず、ファイルが一致しないというケースに遭遇しました。
さらに調査したところ、いくつかの整数と64バイトのchar配列を含む構造があり、ほとんどの場合、char配列のすべてのバイトが使用されているわけではなく、配列の未使用のフィールドにランダムデータが含まれていることがわかりました。不一致を引き起こしていました。
これにより、Javaで行われるように、C /C++でも配列を初期化するのが良い方法かどうかという質問がありました。
c# - C#での配列の連結
C#で他の2つ(またはそれ以上)の配列で配列をスマートに初期化するにはどうすればよいですか?
/li>別の質問:C#配列を効率的に連結するにはどうすればよいですか?
c++ - extern値でテーブル(配列)を作成する方法は?
データ ポインター、データ サイズ、およびデータ バージョンの静的 (ファイル スコープ) テーブルを作成したいと考えています。問題は、データが外部ファイルにあるのに、extern ファイルに定数があることです。
例:
file1.c
file2.c
main.c
Green Hills Compiler 4.2.3 を使用しています。正確なエラー メッセージ:
私の以前の投稿を参照してください:
C: 外部 const ints in a array of const struct
注: これは C++ にも適用されるため、C++ タグが含まれています。
c# - 2次元の文字列配列を宣言するにはどうすればよいですか?
情報を保存するには、3x3の配列を配置する必要があります。これをC#で宣言するにはどうすればよいですか?
scala - Scalaで配列を初期化しています
私はScalaを初めて使用し、今日から学び始めました。Scalaで配列を初期化する方法を知りたいです。
Javaコードの例
Scalaの上記のコードに相当するものは何ですか?
java - トークンの Java 構文エラー、構成の配置ミス - 配列の初期化
Java 5 に次のコードがあります。
との行で
「トークンの構文エラー、コンストラクトの配置が間違っています」と表示されます。私が間違っていることは何か分かりますか?ありがとう。
c++ - int a[5] = {0} と int a[5]={1} の違い (Missing Feature)
このように配列を初期化するint a[5] = {0}
と、コンパイラは 5 つの要素をすべて 0 にします。これは非常に優れたコンパクトな初期化であり、便利な機能です。
しかし、なぜコンパイラがint a[5]={1}
同様に初期化しないのだろうか? 5つの要素すべてを1にしないのはなぜですか? 規格がそれを義務付けていないのはなぜですか? それは素晴らしい機能ではないでしょうか?欠けていませんか?
また、初期化子の要素数が配列のサイズよりも少ない場合、コンパイルは初期化子の最後の要素で残りの要素を初期化できます。つまり、int a[5]={1,2,3}
と同等int a[5]={1,2,3,3,3}
です。同様に、int a[10]={1,2,3,0}
は と同等int a[10]={1,2,3,0,0,0,0,0,0,0};
です。
標準で義務付けられている場合、それはすべて素晴らしい機能ではないでしょうか? または、この欠落している機能には正当な理由がありますか?
また、C99 には指定イニシャライザと呼ばれるものがあり、次のように使用されます。
次の例のように、指定された初期化子を通常の初期化子と組み合わせることができます。
int a[10] = {2, 4, [8]=9, 10}
この例では、a[0] は 2 に初期化され、a 1は 4 に初期化され、a[2] から a[7] は 0 に初期化され、a[9] は 10 に初期化されます。
非常に興味深い。しかし、この機能でさえ C++ にはありません。
c++ - new(size、value)Type [0]によって返されるポインタは正当であり、配列を構築するために使用できますか?
規格によると、5.3.4[expr.new]/7
direct-new-declaratorの式の値がゼロの場合、割り当て関数が呼び出され、要素のない配列が割り当てられます。
とで3.7.3.1[basic.stc.dynamic.allocation]/2
サイズゼロの要求として返されたポインターを逆参照する効果は定義されていません。
しかし、割り当て関数がユーザー定義であり、それが有効なポインターを返したことを知っている場合、それを逆参照することは未定義の動作でしょうか?標準では、ユーザーコードの未定義の動作を義務付けることができますか?
私が尋ねる理由は、デフォルトでは構築できないタイプのオブジェクトの動的配列を初期化するもう1つの無意味な試みです。delete[]
明らかに不足していることと、それを呼び出すことしかできないこと以外に、どのような問題があり[0]
ますか?私もaligned_storage
正しく使用しましたか?
テスト実行: http: //ideone.com/iBW0z
また、MSVC ++2010EEで期待どおりにコンパイルおよび実行されます