私はこの2つの機能を持っており、配列を渡して内容を変更する必要があります。多次元配列をポインタとして渡すには?
void play_game(int mines, int c, int r) {
char (*table)[c][r];
build_field(*table, c, r);
}
void build_field(char *table ,int tamanhox, int tamanhoy) {
int i, x;
for(i=1;i<tamanhoy+1;i++){
table[tamanhoy][tamanhox] = '-';
for(x=0;x<tamanhox-1;x++){
table[tamanhoy][tamanhox] = '-';
}
}
このコードでは、エラーはtable[tamanhoy][tamanhox]
です。
を書く必要がありますので、いずれにしても、さらにこの表現
は意味がありません。 char ** 'それ以外の場合は、フラット 'char *'メモリ空間上に独自の行列表現を作成し、それを使用する必要があります。多くの良いC行列ライブラリがあります。 – David
@David: 'char **'は多次元配列ではなく、1次元または2次元配列を表現することはできません!これはまったく異なるデータ構造です。 OP型は簡単に関数に渡すことができます。そしてその解決策は明らかです。 – Olaf
@Olaf:はい、データ構造は異なります。しかし、特定のメモリレイアウトを前提とすると、char **を使用して多次元配列にインデックスを付けることができます。それは間違いなく悪い形ですが、時にはそれを回避することはできません。私はあなたが私がポストしようとしているリンクでこのテクニックに不平を抱いているのを見ているので、私はちょうど同意しないでしょう。 http://stackoverflow.com/questions/2565039/how-are-multi-dimensional-arrays-formatted-in-memory – David