[C/C++]マルチポインタと多次元配列


通常、多次元配列を実パラメータとして渡す場合は、通常、最高次元以外の次元の幅を指定します.
void read(int input[][9][9], char *filename);

もちろん、パラメータは次のように書くこともできますが、通常は幅パラメータを追加します.
void read(int **input, int width, char *filename);

このとき対応する実参は
int node[MAXNODE][MAXNODE] ={{0}};
read((int **)node, 9, FILENAME);

または
int *node[MAXNODE];
node[0] = (int *)malloc(sizeof(int) * 9);
read(node, 9, FILENAME);

関数の定義に重点を置きました
C++はそのままご利用いただけます
fscanf(fin, "%d", &input[i][j]);

配列にアクセスするには、ポインタに十分なスペースが割り当てられていることを保証する必要があります.
しかしCにとって
以下の形式でのみ使用できます.
fscanf(fin, "%d", (((int*)(input + 0 * i)) + j));
printf("%d ", *((int*)(input + 0 * i) + j));
printf("%d ", *((int*)(input + 0 * i + j)));//  ,      input     

後者の成立の前提はinputの空間全体が連続しているため、