0
私の主な機能では、私は動的な3D配列を作成し、それを配置します。私はこのようにそれを渡すC - 動的に割り当てられた3Dマトリックスを関数に渡す
void readPuzzle(int board[][MAX][MAX], int *dimension, int counter,const char *);
:
int ***board = (int ***)malloc(counter * sizeof(int **));
for(int i = 0; i < counter; i++){
board[i] = (int **) malloc(dimension[i] * dimension[i] * sizeof(int));
}
それから私のように定義された関数に渡すワン
readPuzzle(board, dimension, counter, argv[1]);
しかし、私はこのエラーを取得しておく、私はそれで検索しましたそれを修正することはできませんでした!
main.c: In function ‘main’:
main.c:22:13: warning: passing argument 1 of ‘readPuzzle’ from incompatible pointer type [-Wincompatible-pointer-types]
readPuzzle(board, dimension, counter, argv[1]);
^~~~~
In file included from main.c:4:0:
headers.h:7:6: note: expected ‘int (*)[100][100]’ but argument is of type ‘int ***’
void readPuzzle(int board[][MAX][MAX], int *dimension, int counter, const char *);
2次元配列のポインタは、ポインタのポインタに関するポインタではありません。それらは異なるタイプです。 3星のプログラマについても読んでください:http://wiki.c2.com/?ThreeStarProgrammer –
私はそれが2次元配列の配列であることを望んでいましたが、3スターのプログラマについて少し読んだ後、私は魔法のように私がより良い方法を持っている物事をする!私はちょうど少しステップアップ!ありがとう – NickProg36
コードのどの部分を変更できないのですか?関数インタフェースが固定されている場合は、メモリ割り当てを劇的にやり直す必要があります。 mainのメモリ割り当てが固定されている(私はそれが立っていても修正が必要だと思うが、やや接線です)、関数のインタフェースを変更する必要があります。あなたは相容れないものを和解することはできません。何かが変化しなければならない。 (あなたの最後のコメントから、まだこれについて助けが必要かどうかは不明です。) –