[解決済み] 境界が指定されていない配列の不正な使用
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]
関連
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み】警告:式の結果が未使用の場合
-
[解決済み】シンプルなC言語のscanfが機能しない?重複
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] マクロで無意味なdo-while文やif-else文を使っているのはなぜですか?
-
[解決済み] 未定義、未指定、および実装で定義された動作
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】警告:式の結果が未使用の場合