_ma
@_ma (_ma)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【解決済:C++】固定長の二次元配列を初期化する際、要素数に変数を使えない

Q&A

Closed

解決したいこと

C++で二次元配列を宣言する際、あらかじめ宣言してある変数を要素数とすると配列が正常に初期化できません。
要素数に即値や定数を設定した場合は事象が発生せず、なぜこのような挙動となるのかご教授頂けないでしょうか。

※やりたかったことは二次元配列を全要素0として初期化です
Matrix Vector Multiplication

発生している問題

matrixの中身がおかしいです。
nazo.png

該当するソースコード

main.cpp
#include <bits/stdc++.h>
using namespace std;

int main()
{
  int n, m;  // n=3, m=4 を想定
  cin >> n >> m;
  int matrix[n][m] = { 0 };
  // ..
}

自分で試したこと

(1)標準入力を使わなくても同じ事象が発生します。
nazo_3.png

(2)要素数に即値を設定した場合は事象が発生しません。
nazo_2.png

(3)要素数に定数を設定した場合も事象は発生しません。
nazo_4.png

補足

コンパイラ

$ gcc --version
gcc.exe (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0

ビルドタスク

tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "g++ compile",
      "type": "shell",
      "command": "g++",
      "args": [
        "-g",
        "-O0",
        "\"${file}\"",
        "-o",
        "\"${relativeFileDirname}\\exe\\${fileBasenameNoExtension}.exe\""
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}
0

2Answer

Comments

  1. @_ma

    Questioner

    コメント頂きありがとうございます。

    うーん、そうなのですね。。
    ちょっと別のコンパイラ試すなどしてみます。

    参考記事のサイト(Javaer101)についても、今まで知らなかったので、
    大変勉強になりました。調べものの時に使えそうです。
    こちらも大変ありがとうございます。

コンパイルエラー出ないのが謎ですが、配列の要素数に変数はそもそもNGらしいのでクローズしました。

0Like

Your answer might help someone💌