1. ホーム
  2. c

[解決済み] 境界が指定されていない配列の不正な使用

2022-02-15 04:11:47

質問内容

私のプログラムで質問があります。関数Green_Decode_Treeに3Dのint配列CodedGreenを渡すと、CodedGreenの配列が表示されます。エラーメッセージ"invalid use of array with unspecified bounds"が表示されました。私のプログラムのどこが間違いなのでしょうか?よろしくお願いします。

for(i=0;i<256;i++){
          for(j=0;j<256;j++){
    Decode_Tree(green[0], CodedGreen,0,i,j);
          }
      }

void Green_Decode_Tree(node* tree, int code[][][], int num,int row,int col)
{
    int i;
    i=num;

    if((tree->left == NULL) && (tree->right == NULL)){
        fprintf(DecodGreen,"%s\n", tree->ch);
    }
    else
    {
        if(code[row][col][num]==1){
            i++;
            Green_Decode_Tree(tree->left,code,i,row,col);
        }
        else if (code[row][col][num]==0){
            i++;
            Green_Decode_Tree(tree->right,code,i,row,col);
        }

    }

}

解決方法は?

秘密を明かしましょう。2次元(および3次元)配列は、ライナーメモリ配列として表現されます。 a[i][j] に変換されます。 a[i*M + j] お気づきのように、コンパイラはこの変換を行うためにMを知らなければならず、そうでなければ翻訳することができません。というわけで、彼はこう聞いているのです。最初のサイズ以外はすべて配列で提供する必要があります。 int code[][M][N]