• ベストアンサー

【C言語】配列の中に配列を入れたい

const double A[2] = {1.0, 2.0}; double B[2][3] = { { A[0], A[1], 0.0 }, { 0.0, 0.0, 0.0 }}; このようなプログラムをコンパイルしようとすると、 初期化子の要素が定数ではありません というエラーが出てしまい困っています。どのように解決したらいいでしょうか。 OSはlinux、コンパイラgccです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

>配列の中に配列を入れたい 何か誤解を招く表現ですね。 「配列の中のある要素の初期値として、別の配列の要素を指定したい。」と言う意味でしょうか? 配列の初期値ですが、変数の記憶域が静的な場合は配列に限らず、定数しか指定できません。 動的領域の場合は変数の内容を初期値にすることは論理的に可能ですが、コンパイラによっては 静的な場合と一緒にしてしまっている場合があります。恐らく後者なのだと思います。 しょうがないので、配列生成後に代入するしかないでしょう。そもそも動的領域に初期値と いうのは本来できないことなのです。実際に生成されるコードは変数の確保→値の代入の順に なっており、明示的にソースコードを書くか書かないかの違いしかありません。

その他の回答 (2)

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

初期化でするからでは? double B[2][3]; B[0][0] = A[0]; B[0][1] = A[1]; ... とかでは駄目なの?

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

デファインシンボルじゃ駄目ですか? #define A1  1.0 #define A2  2.0 const double A[2] = {A1, A2}; double B[2][3] = { { A1, A2, 0.0 }, { 0.0, 0.0, 0.0 }}; 同じ環境無いんで確認できないけど・・・・・ (VCでやったら元々のでも通ってしまった)

関連するQ&A